454方法引用_通过super引|用父类的成员方法和455方法引用_通过this引l用本类的成员方法
通过super引|用父类的成员方法
/*
定义一个见面得函数式接口
*/
public interface Greetable {
/*
定义一个见面得方法
*/
void greet();
}
/*
定义父类
*/
public class Human {
//定义一个sayHello的方法
public void sayHello(){
System.out.println("Hello,我是Human");
}
}
/*
定义子类
*/
public class Man extends Human{
//子类重写父类sayHello的方法
public void sayHello(){
System.out.println("Hello 我是Man");
}
//定义一个方法参数传递Greetable接口
public void method(Greetable g){
g.greet();
}
public void show() {
//调用method方法,方法的参数Greetable是一个函数式接口,所以可以传递Lambda
/*method(()->{
//创建夫类的Human对象
Human human = new Human();
//使用父类的sayHello方法
human.sayHello();
});*/
//因为子夫类关系,所以存在的一个关键字super,代表父类,所以我们可以直接使用supe调用父类的成员方法
/*method(() -> {
super.sayHello();
});*/
/*
使用super引用类的成员方法
super是已经存在的
父类的成员方法sayHello也是存在的
所以我们可以直接使用sup引用父类的成员方法
*/
method(super::sayHello);
}
public static void main(String[] args) {
new Man().show();
}
}
通过this引l用本类的成员方法
this代表当前对象,如果需要引用的方法就是当前类的成员方法,那么可以使用“this :: 成员方法”的格式来使用方法引用。
/*
定义一个富有的函数式接口
*/
public interface Richable {
//定义一个想买什么就买什么的方法
void buy();
}
/*
通过this引用类的成员方法
*/
public class Husband {
//定义一个买房子的方法
public void buyHuose(){
System.out.println("北京二环内买一套四合院");
}
//定义一个结婚的方法,参数传递Richable接口
public void marry(Richable r){
r.buy();
}
//定义一个非常高兴的类
public void soHappy() {
//调用结婚的方法,方法的参数Richable是一个函数式接口,传递Lambda表达式
/*marry(() -> {
//使用This成员方法,调用本来买房子的方法
this.buyHuose();
});*/
/*
使用方法引用优化Lambda表达式this是已经存在的
本类的成员方法buyHouse也是已经存在的
所以我们可以直接使用this引用本类的成员方法buyHouse
*/
marry(this::buyHuose);
}
public static void main(String[] args) {
new Husband().soHappy();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix