gpt4 book ai didi

java - 匿名内部类实际上不是子类吗?

转载 作者:行者123 更新时间:2023-12-01 06:42:18 24 4
gpt4 key购买 nike

假设 A 是一个自定义类,并考虑以下匿名内部类的声明:

A Obj = new A() {
@Override
public String toString() {
return "Hello!";
}
}

在此场景中,Obj 是一个匿名内部类的实例,其 toString 方法已被重写。既然是用类型A声明的,那么匿名类一定是A的子类。那么,为什么这个类不叫匿名子类,而叫匿名内部类呢? “内在”从何而来?

最佳答案

是的,objA子类的实例。您可以通过调用 obj.getClass().getSuperclass() 来验证父类(super class):

打印出类似这样的内容:

class stackoverflow.Test$1 //obj.getClass()
class stackoverflow.A //obj.getClass().getSuperclass()

So then, why isn't this class called an Anonymous Subclass instead of an anonymous inner class?

这些只是语义。这是一个名字。然而,可能有很多原因,其中之一是匿名类可以直接实现接口(interface):

Runnable r = new Runnable() {
public void run() {}
}

这不是任何东西的子类(除了 Object,但不是 Object 的子类......),但它也是一个匿名类。

关于java - 匿名内部类实际上不是子类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51903919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com