通过super引用父类的成员方法以及通过this引用本类的成员方法

通过super引用父类的成员方法

如果存在继承关系当lambda中出现需要super调用时,也可以使用方法引用进行代替

/**
 * 定义见面的函数式接口
 */
@FunctionalInterface
public interface Greetable {
    //定义见面方法
    void greet();
}
/**
 * 定义父类
 */
public class Human {
    public void sayHello(){
        System.out.println("Hello,Human");
    }
}
复制代码
/**
 * 定义子类
 */
public class Man extends Human{
    //子类重写父类的sayHello方法
    @Override
    public void sayHello() {
        System.out.println("Hello,max");
    }
    //定义一个方法参数传递Greetable接口
    public void method(Greetable g){
        g.greet();
    }

    public void show(){
//        //调用method方法,方法的参数Greetable是一个函数式几口
//        method(()->{
//            //创建父类的Human对象
//            Human h = new Human();
//            //调用父类的sayHello方法
//            h.sayHello();
//        });
        //因为有子父类关系,所以存在的一个关键字super,代表父类,所以我们可以直接使用super调用父类的成员方法
//        method(()->{super.sayHello();});
        /*
           使用super引用父类的成员方法
           super是已经存在的
           父类的成员方法sayHello也是已经存在的
           所以我们可以直接使用super引用父类的成员方法
         */
        method(super::sayHello);
    }

    public static void main(String[] args) {
        new Man().show();
    }
}
复制代码

 

 

 

 

 

 

 

 

 

 

 

通过this引用本类的成员方法

this代表当前对象,如果需要引用的方法就是当前类中的成员方法,那么可以使用"this:成员方法""的格式来使用方法引用。

/**
 * 定义一个富有的函数式接口
 */
@FunctionalInterface
public interface Richable {
    //定义一个方法
    void buy();
}
复制代码
/*
使用this引用本类的成员方法
 */
public class Husband {
    //定义一个买房的方法
    public void buyHouse(){
        System.out.println("买房");
    }
    //定义一个结婚的方法,参数传递Richable接口
    public void marray(Richable r){
        r.buy();
    }
    //定义一个非常高兴的方法
    public void soHappy(){
        //调用结婚方法,方法的参数Richable是一个函数式接口
        marray(()->{
            //使用this.成员方法,调用本类买房子的方法
            this.buyHouse();
        });

        /*
            使用方法引用优化Lambda表达式
            this是已经存在的
            本来的成员方法buyHouse也是已经存在的
            所以我们可以直接this直接引用本来的成员方法buyHouse
         */
        marray(this::buyHouse);
    }
    public static void main(String[] args) {
        new Husband().soHappy();
    }
}
复制代码

运行结果:

 

posted @   xjw12345  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示