是java.lang.Object所有的超类
继承的自定义类/对象
隐含的?
小修正:关于以下表达式:
所有custom
class/objects的超类
一个类 A 是另一个类 B 的超类。 B 的对象或实例 没有 A 作为它们的超类(因为它们是对象/对象实例,而不是类本身。)最合适的描述是这些对象是 B 类的实例,该类以 A 作为其超类。
现在,关于java.lang.Object 的问题。它是所有可以被 java 运行时实例化的东西的超类。这包括两者:
- 您编写的类(自定义类),以及
- Java 语言本身提供的类。
我以为java不支持多个
继承。
它没有。它只支持单个class(或implementation)继承(结合多个interface(或type)继承。
您将继承与类层次结构混淆了。请看下文。
我问的原因是我是否已经
从我的另一个类继承
自定义类和java再次强制
隐式继承
java.lang.Object 在它上面,
这对多重继承很好。假设您有一个从 Java 已经提供的类(例如 A 类)中编写的类 B。所以存在如下线性传递关系:
java.lang.Object > A > B
其中> 代表immediate parent of。任何从 Object 继承的类都只能有只有一个immediate parent。在任何时候,您都不会拥有一个 C 类,它对任何两个 A 类和 B 类的以下约束都不成立:
forAll A, B { A > B -> forAll C { C >
B C == A } }
意思是,对于所有 A 和 B 类,使得 A 是 B 的 immediate parent,那么对于所有 C 类,C 只能是 B 的 immediate parent *当且仅当 C 本身就是 A。
通过单继承,您可以(理论上)拥有无限的继承链A > B > C > ...,只要链中的每个类都在one and only one 直接父级之前。作为一个有用的类比,这类似于自然数中的 predecessor 关系 (0 preceedes 1 preceedes 2 which preceedes 3 ...)。
免责声明:这不是您在日常编程生活活动中使用的东西。但是,准确地了解这些事物的内在含义将极大地帮助您了解面向对象。
不是多重继承吗?
否(见上文。)与单继承相反 - 如上所述 - 在多重继承中,您可以有多个直接父级(如在 C++ 中所见)。
正如我们在上面的定义中注意到的,传递继承关系“>”是从一个类到另一个类。但是对于多重继承,关系是从一组超类{A} 到单个类{B}:
{A} > B -> forAll a {a in A <-> a > B}
在 C++ 中,你可以有没有父类的类,那么集合 {A} 可以是空集。在java中,你也有多重继承,但仅限于interfaces(或类型)
还有,是java.lang.class 类也是
所有自定义的超类
类/对象?
没有。如果您访问在线提供的 Javadoc 手册,它将有助于您的学习。查一下。真的。
如果没有,我们如何在 java 中反射
获取任何类的类类型
通过或调用 isInstance 在任何
对象?
因为 java.lang.Class 的实例(以及 java 反射使用的所有类)是其他类的元数据描述符。这与继承无关。你在这里指的是meta-programming。
此外,java.lang.Class 是一个最终类;因此,它不能是任何东西的超类。
java.lang.Class 的功能是成为 java.lang.Object 的所有实例和子类(包括 java.lang.Class 本身)的元数据提供者/描述符。与每个类关联的类字段( .ie. String.class) 是一个静态的类级字段,描述与该类关联的元数据。
java.lang.Class 包含/描述的元数据包含方法、构造函数和字段的元数据访问器对象。同样,这与继承无关。
继承 =/= 元编程。
希望对你有帮助。