枚举继承解释不清楚



所以根据java文档

所有枚举都隐式扩展java.lang.Enum。因为一个类只能扩展一个父类,所以 Java 语言不支持状态的多重继承,因此枚举不能扩展任何其他内容。

但在Java中,我们也知道:-

Java 中的所有类都隐式扩展了 java.lang.Object 类

但是我们显然可以在java中扩展类。由于我们扩展的类本身是从Object扩展的(因此它不会导致多重继承,或者将其声明为:- 如果您不扩展任何其他类扩展自Object则从从Object扩展的类XYZ扩展(

Java 文档的解释是否不正确,因为枚举无法扩展其他类/枚举等?

我错过了一些愚蠢的点吗?

它只是意味着你不能让你的枚举扩展除了隐式扩展Enum之外的任何其他内容。

当它说Java不允许扩展多个类时,这意味着你不能有

.--------.   .----------.
| Enum   |   | YourBase |
'--------'   '----------'
     ^            ^
                /
               /
       .----------.
       | YourEnum |
       '----------'

另一方面,这是完全可以的:

.--------.
| Object |
'--------'
     ^
     |
.--------.
|  Enum  |
'--------'
     ^
     |
.----------.
| YourEnum |
'----------'

当文档说

Java 中的所有类都隐式扩展了 java.lang.Object 类

它只是意味着每个类要么直接扩展 Object,要么通过它的超类间接扩展 Object。

运行此代码,你会得到答案:

System.out.println(MyEnum.class.getSuperclass());
System.out.println(MyEnum.class.getSuperclass().getSuperclass());
public enum MyEnum  {   
}

输出:

class java.lang.Enum
class java.lang.Object

最重要的是,考虑到Java中不允许多重继承。 MyEnum已经扩展了Enum,而Enum已经扩展了Object。这个链条中没有任何其他扩展的空间。

最新更新