1. 程式人生 > 實用技巧 >方法引用_通過super引用父類的成員方法

方法引用_通過super引用父類的成員方法

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();
}