簡體   English   中英

匿名子類和常規(非匿名)子類之間的 Java 區別

[英]Java difference between anonymous subclass and regular (non-anonymous) subclass

我無法在 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的方法。

基本上這兩種方法的工作原理幾乎相同。 當您只想使用它們一次時,您經常使用匿名子類。 不同之處在於 - 您不能在匿名子類中使用構造函數等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM