匿名子类和常规(非匿名)子类之间的Java差异



我很难在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()

第一种情况仍然是"SomeClass"的子类,还是与重写方法的类型相同?

它是SomeClass的一个子类。你说的"具有重写方法的同一类型"是什么意思。这没有道理。

如果在methodToOverride()内部我调用super.methodToOverride(),在第一种情况下会发生什么?它会调用原始SomeClass的methodToOverride()还是SomeClass父methodToOverride()?

它将调用SomeClass中的方法。

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

相关内容

  • 没有找到相关文章

最新更新