//此处用了匿名内中类
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가 아니라 내부의 두 익명 하위 클래스에 의해 다시 작성되었습니다. . 데모는 전화만 담당합니다
데모는 추상 클래스를 상속하지 않습니다. Fu 클래스의 인스턴스만 포함합니다.
JAVA를 사용해 본 적이 없는데 어떻게 추상 클래스를 인스턴스화할 수 있나요? 이것이 이상한 것입니다.
new Fu()는 Fu를 상속하는 익명 개체 = new Fu()와 동일해야 한다고 생각합니다. 이것이 OOP의 다형성입니다.
익명 내부 클래스를 정의하면 JVM이 자동으로 클래스를 생성하는데, 이는 실제로 JVM의 경우 익명이 아닙니다. 사용자는 그렇지 않으며 이 클래스에 액세스할 수 없습니다. 이 A 클래스는 새 클래스 또는 인터페이스의 하위 클래스 또는 구현 클래스이며 해당 참조는 상위 클래스 또는 인터페이스입니다.