使用super引用父类方法
package cn.com.cqucc.demo06.SuperMethodReference.Tes06.SuperMethodReference;
/*
* 方法引用 使用super引用 父类的方法
* */
public class Zi extends Fu {
public static void main(String[] args) {
// 创建子类对象 调用 非静态 成员方法
Zi z = new Zi();
z.show();
}
// 定义一个方法 参数传递 一个函数式接口 Greet
public static void method(Greet g) {
g.greet();
}
// 子类重写父类的方法
@Override
public void sayHello() {
System.out.println("hell 我是Zi");
}
public void show() {
// 实现方式一 : 匿名内部类
method(new Greet() {
@Override
public void greet() {
Fu f = new Fu();
f.sayHello();//输出结果 : hello 我是Fu
}
});
// 实现方式二 : Lambda表达式
method(() -> super.sayHello());//静态方法不能调用非静态方法 输出结果 : hello 我是Fu
// 实现方式 : Lambda表达式 + super引用 父类的成员方法
method(super::sayHello);//输出结果 :hello 我是Fu
}
}
package cn.com.cqucc.demo06.SuperMethodReference.Tes06.SuperMethodReference;
/*
* 定义一个父类 方便使用 super引用父类的方法
* */
public class Fu {
public void sayHello() {
System.out.println("hello 我是Fu");
}
}
package cn.com.cqucc.demo06.SuperMethodReference.Tes06.SuperMethodReference;
/*
* 自定义一个 接口
* */
@FunctionalInterface
public interface Greet {
void greet();
}