簡體   English   中英

Java Enum不能擴展其他Enum,class可以

[英]Java Enum can't extends other Enum, class can

Stackoverflow 的用戶提出了這個問題,遺憾的是沒有可以解釋情況的答案。

為什么枚舉不能擴展另一個 class 而所有其他類都可以

我也有同樣的問題。 Java 還告訴它是多擴展並且不支持。 Java 文檔。

但這部分讓我很困惑。 If any class by default extends Object class(Main class in Java), and any new class can extend another class (except Object class), but any new Enum can't? 為什么?

任何 Enum 默認擴展 Enum class 並且對於特殊的 enum 不能擴展更多的類,如果說它是程序方式,會更容易理解。 但是在文檔中寫不能擴展,因為它是多個類。 也許文檔不正確? 如果有人可以解釋這部分,請解釋一下。

謝謝!

正如對您鏈接的問題的評論所解釋的那樣,所有類都不會擴展 Object。

class:

class Foo { }

隱式擴展Object ,但擴展為 class:

class Bar extends Foo { }

只是擴展Foo

它也是Object通過Foo的后代。

所以一個 enum 隱式地擴展了Enum ,並且不能擴展其他任何東西。

枚舉是最終類,所以沒有什么可以擴展它們。

從您鏈接的文檔中:

注意:所有枚舉都隱式擴展 java.lang.Enum。 Because a class can only extend one parent (see Declaring Classes), the Java language does not support multiple inheritance of state (see Multiple Inheritance of State, Implementation, and Type), and therefore an enum cannot extend anything else.

基本上Enum內置了編譯器魔法,實際上編譯器從 java.lang.Enum 擴展了 Enum java.lang.Enum Java 不支持多個 inheritance 類,因此您不能擴展枚舉。

也可以從規范 jls-8.9中看到這一點。

枚舉類型是隱式最終的,除非它包含至少一個具有 class 主體的枚舉常量。

將枚舉類型顯式聲明為最終類型是編譯時錯誤。

暫無
暫無

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

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