首页 > 其他 > 详细

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

时间:2020-12-04 14:29:56      阅读:26      评论:0      收藏:0      [点我收藏+]
package com.chunzhi.Test07SuperMethodReference;

public class Man extends Human{
    @Override
    public void sayHello() {
        System.out.println("你好,我是Man");
    }
    // 定义一个方法参数传递函数式接口Meet接口
    public void method(Meet m) {
        m.Greet();
    }

    public void show() {
        // 三种执行方案,直接通过 super引用类的成员方法 最为简便,也就是第三种执行方案
        // 第一种执行方案
        // 调用method方法,方法的参数Meet是一个函数式接口,所以可以传递Lambda表达式
        method(() -> {
            // 创建父类Human,调用父类中的sayHello方法
            Human h = new Human();
            h.sayHello();
            // 创建子类Man,调用子类中重写的sayHello方法
            Man m = new Man();
            m.sayHello();
        });

        // 第二种执行方案
        // 因为有子父类关系,所以存在一个关键字super,代表父类,所以我们可以直接使用super调用父类的成员方法
        method(() -> {
            super.sayHello();
        });

        // 第三种执行方案
        /*
            使用super引用类的成员方法
            super是已经存在的
            父类的成员方法sayHello也是已经存在的
            所以我们可以直接使用super引用父类的成员方法
         */
        method(super :: sayHello);
    }

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

父类Human:

package com.chunzhi.Test07SuperMethodReference;
// 定义一个父类Human
public class Human {
    public void sayHello() {
        System.out.println("你好,我是Human");
    }
}

Meet函数式接口:

package com.chunzhi.Test07SuperMethodReference;
@FunctionalInterface
public interface Meet {
    public abstract void Greet();
}

 

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

原文:https://www.cnblogs.com/chunzhi716/p/14085190.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!