java.lang.Class 和 java.lang.Object

标签 java multiple-inheritance

Ok 概念上的困难 - 从一本书中阅读和学习 Java

它提到了以下内容(在解释几个不同主题的过程中)-

  1. Java 不支持类层次结构中的多重继承。所以如果 C 类是 A 类的子类,那么它就不能也是 B 类的子类(我知道接口(interface)在这里提供了解决方案)

  2. java.lang.Object是所有类(系统和用户)“扩展”的原始类。所以每个类都是该类的直接或间接子类java.lang.Object

  3. Java 中的类不仅是编译器的产物 - 而且在运行时,由类的实例表示 java.lang.Class

难道#3 不意味着用语言本身定义的类属于 java.lang.Class 类型吗? - 而#2 表示它们也是 java.lang.Object 类型- 与#1 相矛盾? java 类的子类属于哪个类?

如果#1 仍然成立,我猜这意味着#3 只是说类的“运行时表示”是类 java.lang.Class 的实例- 这是 java.lang.Object 的 child ??, 但类本身是 java.lang.Object 的子类??

感谢您的指导!!提前致谢!

最佳答案

Doesn't #3 mean classes defined in the language themselves are of type java.lang.Class

没有。 (Class) testclass是语法错误 - 没有类是 java.lang.Class 的子类- 这是 final .

Class延伸Object并代表 class .

假设我有 TestClass延伸Object默认情况下,现在 TestClass.class(TestClass).getClass()存在 - 他们返回 Class<TestClass> , 它扩展了 Object并且是 Class 的实例.

But if you look into the Java documentation for Class , you'll see they are more than Object s.

关于java.lang.Class 和 java.lang.Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24718980/

相关文章:

Java NoSuchMethodException - 类中确实存在方法

java - 打印 bufferedImage 有 3 英寸的边距

java - TestNG [错误] 未找到测试套件。没有什么可运行的

nhibernate - 使用 NHibernate Loquacious Mapping By Code 的多级继承

python - 为什么,在父类上用self调用函数时,子类实际上是在Python中运行

java - JDBC 使用 MySQL 选择批处理/获取大小

javascript - 使用 nashorn 从 JavaScript 引用现有 Java 对象

C++ 多重继承顺序

c++ - 从模板类多重继承

c++ - 非虚拟接口(interface)习语是否不适用于纯虚函数?