方法引用_通過super引用父類的成員方法
阿新 • • 發佈:2020-12-04
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(); }