通过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(); } }
标签:void,public,sayHello,引用,父类,方法,成员 From: https://www.cnblogs.com/agzq/p/16721659.html