您的位置:首頁技術文章
文章詳情頁

java - 在這兒并沒有申明FU為Demo的父類,為什么還是可以繼承重寫呢

瀏覽:84日期:2024-01-06 09:28:30

問題描述

//此處用了匿名內中類 abstract class Fu {public abstract void sleep(); } class Demo { public void fun(){//創建匿名對象,可以使用匿名類中類 new Fu() { public void sleep(){System.out.println('睡覺');} public void eat(){System.out.println('吃飯');}} .sleep(); //創建匿名對象 new Fu() { public void sleep(){System.out.println('睡覺');} public void eat(){System.out.println('吃飯');}} .eat(); } } class Demonmnbl1 {public static void main(String[] args) { Demo de1 = new Demo(); de1.fun();} }

問題解答

回答1:

又不是Demo重寫,是里面的兩個匿名子類重寫的。。Demo只是負責調用

回答2:

Demo并沒有繼承抽象類。 只是包含了Fu類的實例。

沒用過JAVA,抽象類怎么可能被實例化?這才是值得奇怪的地方。

我感覺 new Fu()應該就相當于 something = new Fu(). 一個繼承了Fu的匿名對象。這也就是OOP里的多態。

回答3:

定義匿名內部類的時候,JVM會自動給你生成一個類,說是匿名,其實對于JVM來說,當然不是匿名,JVM知道這個類,而用戶不知道,用戶無法訪問這個類,這個類是你new的類或接口的子類或實現類,它的引用是父類或接口。

標簽: java
国产综合久久一区二区三区