对象类作为Java中的超类
为什么对象类是Java中的超类?
这是一个很好的问题。 Java选择使单个类成为所有内容的最终父类,以便有一种简单的方法来传递任意对象,而无需知道其类型(即,您可以使用声明的Object类型来引用每个项目在类型系统中,甚至是使用其包装类的基元)。 但是,有一些OOP语言,例如C ++,其中没有像Java那样的通用基类。 拥有通用基类的另一个好处是,处理超类的逻辑不必专门用于顶级类(通用基类,Object本身除外)。
这就是我们所说的Java中面向对象编程的公理。 代码中的每个抽象都是一个对象。 它包含一些适用于您在代码中使用的每个信息的内容:
-
equals
和hashCode
方法在给定的抽象中建立一个等式理论(参见相应的javadoc ); -
toString
以人类可读(可能是程序员可读的)格式表示对象(因为我们大多数人仍然使用显示器和键盘); -
getClass
在给定的抽象上提供reflectionfunction; - 一些组织面向对象的运行时的方法(垃圾收集,同步等)。
如果您学习Java,最好学习您使用的任何书籍的“inheritance”部分,然后尝试自己回答这个问题。
在我的头顶
-
将“Object”定义为根类可确保VM可以依赖为实用程序方法(如equals,clone,hashcode等)提供的接口
-
垃圾收集器可以确保在finalize方法中可以执行用户认为可以协调的任何内容
它为程序员创建的所有派生对象提供了一个模板。 通过这种方式可以获得每个用户定义对象可能需要的关键function。
-
对象锁定(用于并发问题解决)
-
克隆
- 哈希码生成
列出更重要的名称。
Java类(隐式/显式) extends Object
,原因如下:
- Java需要在每个存在的平台上运行(无论是移动,Windows,Linux等),并且编写大量代码以在每个平台上运行是一项任务。 因此,Java创建了
native
。 这样,所有对象都被注册为JVM可以理解和执行的本机对象。 不要忘记JVM是用C ++编写的(无论它在哪个平台上执行)。 - 对于垃圾收集,当不需要Object时,JVM会调用
finalize
方法。
其余的已经在这里提到了。
java程序本质上是操纵
方法和类。
该类inheritance了稍后构建结构的一些属性。
Object是基类,所有类都是Object的子类。
一个原因是inheritance。 它只是减少代码重复。 如果你观察Object类中的方法,它包含每个类应该包含的基本方法,它们是每个类应该具有和支持的非常基本的特性或function(比如获取类名,Object的字符串表示等)。 所以程序员不需要再次编写这些代码。
完整参考 – 为什么Object是Java中所有类的基类