|NO.Z.00081|——————————|BigDataEnd|——|Java&特殊類.V09|------------------------------------------------|Java.v09|匿名內部類|使用|
阿新 • • 發佈:2022-04-03
[BigDataJava:Java&特殊類.V09] [BigDataJava.面向物件] [|章節五|特殊類|匿名內部類的使用|]
一、匿名內部類的使用
### --- 開發經驗分享 ~~~ ——> 當介面/類型別的引用作為方法的形參時,實參的傳遞方式有兩種: ~~~ ——> 自定義類實現介面/繼承類並重寫方法,然後建立該類物件作為實參傳遞; ~~~ ——> 使用上述匿名內部類的語法格式得到介面/類型別的引用即可;
### --- 匿名內部類的語法格式(重點)
~~~ ——> 介面/父類型別引用變數名= new 介面/父類型別() { 方法的重寫};
二、程式設計程式碼
package com.yanqi.task10;
public interface AnonymousInterface {
// 自定義抽象方法
public abstract void show();
}
三、程式設計程式碼
四、程式設計程式碼package com.yanqi.task10; public class AnonymousInterfaceImpl implements AnonymousInterface { @Override public void show() { System.out.println("這裡是介面的實現類!"); } }
五、編譯列印package com.yanqi.task10; public class AnonymousInterfaceTest { // 假設已有下面的方法,請問如何呼叫下面的方法? // AnonymousInterface ai = new AnonymousInterfaceImpl(); // 介面型別的引用指向實現型別的物件,形成了多型 public static void test(AnonymousInterface ai) { // 編譯階段呼叫父類版本,執行呼叫實現類重寫的版本 ai.show(); } public static void main(String[] args) { //AnonymousInterfaceTest.test(new AnonymousInterface()); // Error:介面不能例項化 AnonymousInterfaceTest.test(new AnonymousInterfaceImpl()); System.out.println("---------------------------------------------------------------"); // 使用匿名內部類的語法格式來得到介面型別的引用,格式為:介面/父類型別 引用變數名 = new 介面/父類型別() { 方法的重寫 }; AnonymousInterface ait = new AnonymousInterface() { @Override public void show() { System.out.println("匿名內部類就是這麼玩的,雖然你很抽象!"); } }; // 從Java8開始提出新特性lamda表示式可以簡化上述程式碼,格式為:(引數列表) -> {方法體} AnonymousInterface ait2 = () -> System.out.println("lamda表示式原來是如此簡單!"); AnonymousInterfaceTest.test(ait2); } }
D:\JAVA\jdk-11.0.2\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=54237:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath E:\NO.Z.10000——javaproject\NO.H.00001.javase\javase\out\production\javase com.yanqi.task10.AnonymousInterfaceTest
這裡是介面的實現類!
---------------------------------------------------------------
lamda表示式原來是如此簡單!
Process finished with exit code 0
===============================END===============================
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart ——W.S.Landor
來自為知筆記(Wiz)