首頁  >  問答  >  主體

java - 在这儿并没有申明FU为Demo的父类,为什么还是可以继承重写呢

//此处用了匿名内中类
    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();
        }
    }
迷茫迷茫2743 天前414

全部回覆(3)我來回復

  • 天蓬老师

    天蓬老师2017-04-18 10:55:47

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

    回覆
    0
  • 阿神

    阿神2017-04-18 10:55:47

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

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

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

    回覆
    0
  • 怪我咯

    怪我咯2017-04-18 10:55:47

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

    回覆
    0
  • 取消回覆