所以根据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
。这个链条中没有任何其他扩展的空间。