对象类作为Java中的超类

为什么对象类是Java中的超类?

这是一个很好的问题。 Java选择使单个类成为所有内容的最终父类,以便有一种简单的方法来传递任意对象,而无需知道其类型(即,您可以使用声明的Object类型来引用每个项目在类型系统中,甚至是使用其包装类的基元)。 但是,有一些OOP语言,例如C ++,其中没有像Java那样的通用基类。 拥有通用基类的另一个好处是,处理超类的逻辑不必专门用于顶级类(通用基类,Object本身除外)。

这就是我们所说的Java中面向对象编程的公理。 代码的每个抽象都是一个对象。 它包含一些适用于您在代码中使用的每个信息的内容:

  • equalshashCode方法在给定的抽象中建立一个等式理论(参见相应的javadoc );
  • toString以人类可读(可能是程序员可读的)格式表示对象(因为我们大多数人仍然使用显示器和键盘);
  • getClass在给定的抽象上提供reflectionfunction;
  • 一些组织面向对象的运行时的方法(垃圾收集,同步等)。

如果您学习Java,最好学习您使用的任何书籍的“inheritance”部分,然后尝试自己回答这个问题。

在我的头顶

  1. 将“Object”定义为根类可确保VM可以依赖为实用程序方法(如equals,clone,hashcode等)提供的接口

  2. 垃圾收集器可以确保在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中所有类的基类