java - 在这儿并没有申明FU为Demo的父类,为什么还是可以继承重写呢
迷茫
迷茫 2017-04-18 10:53:47
0
3
412
//此处用了匿名内中类
    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();
        }
    }
迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回覆(3)
Peter_Zhu

又不是Demo重寫,是裡面的兩個匿名子類別重寫的。 。 Demo只是負責呼叫

阿神

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

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

我覺得 new Fu()應該就相當於 something = new Fu(). 一個繼承了Fu的匿名物件。這也就是OOP裡的多態。

刘奇

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!