ホームページ  >  に質問  >  本文

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日前421

全員に返信(3)返信します

  • 天蓬老师

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

    これは Demo によって書き換えられるのではなく、内部の 2 つの匿名サブクラスによって書き換えられます。 。デモは呼び出しを担当するだけです

    返事
    0
  • 阿神

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

    デモは抽象クラスを継承しません。 Fu クラスのインスタンスのみが含まれます。

    JAVA を使用したことがありません。抽象クラスはどのようにインスタンス化できますか?これが不思議なことだ。

    new Fu() は何か = new Fu() を継承する匿名オブジェクトと同等であるべきだと思います。これが OOP におけるポリモーフィズムです。

    返事
    0
  • 怪我咯

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

    匿名内部クラスを定義すると、JVM は自動的に匿名クラスを生成します。これは、JVM にとってはもちろん匿名ではありませんが、ユーザーはそれを知っています。ユーザーはこのクラスにアクセスできません。このクラスは新しいクラスまたはインターフェイスのサブクラスまたは実装クラスであり、その参照は親クラスまたはインターフェイスです。

    返事
    0
  • キャンセル返事