//此处用了匿名内中类
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();
}
}
これは Demo によって書き換えられるのではなく、内部の 2 つの匿名サブクラスによって書き換えられます。 。デモは呼び出しを担当するだけです
デモは抽象クラスを継承しません。 Fu クラスのインスタンスのみが含まれます。
JAVA を使用したことがありません。抽象クラスはどのようにインスタンス化できますか?これが不思議なことだ。
new Fu() は何か = new Fu() を継承する匿名オブジェクトと同等であるべきだと思います。これが OOP におけるポリモーフィズムです。
匿名内部クラスを定義すると、JVM は自動的に匿名クラスを生成します。これは、JVM にとってはもちろん匿名ではありませんが、ユーザーはそれを知っています。ユーザーはこのクラスにアクセスできません。このクラスは新しいクラスまたはインターフェイスのサブクラスまたは実装クラスであり、その参照は親クラスまたはインターフェイスです。