gpt4 book ai didi

匿名子类和常规(非匿名)子类之间的Java区别

转载 作者:行者123 更新时间:2023-11-30 09:09:40 24 4
gpt4 key购买 nike

我很难找到有关 Java 中这种子类化/覆盖的信息,我看到它在 Swing 应用程序(事件监听器和类似的东西)中使用了很多:

// ...  
SomeClass foo = new SomeClass() {
@Override
public String methodToOverride() { return ""; }
}

对比

class SubClass extends SomeClass {
@Override
public String methodToOverride() { return ""; }
}
// ...
SubClass foo = new SubClass();

第一种情况是否仍然是“SomeClass”的子类,还是具有重写方法的同一类型?特别是,如果在 methodToOverride() 中调用 super.methodToOverride(),第一种情况会发生什么?它会调用原始的 SomeClass 的 methodToOverride() 还是 SomeClass 的父 methodToOverride()

最佳答案

Is the first case still a subclass of 'SomeClass', or is it the same type with an overridden method?

它是SomeClass 的子类。你是什​​么意思 - “具有重写方法的相同类型”。这没有意义。

what happens in the first case if inside methodToOverride() I call super.methodToOverride()? Will it call the original SomeClass' methodToOverride(), or SomeClass' parent methodToOverride()?

它将调用SomeClass中的方法。

基本上这两种方法的工作原理几乎相同。当您只想使用它们一次时,您经常使用匿名子类。不同之处在于 - 您不能在匿名子类等中使用构造函数。

关于匿名子类和常规(非匿名)子类之间的Java区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22972379/

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