Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中作为超类的对象类_Java_Class - Fatal编程技术网

Java中作为超类的对象类

Java中作为超类的对象类,java,class,Java,Class,为什么对象类是Java中的超类 这是个好问题。Java选择将单个类作为所有对象的最终父类,这样就可以轻松地传递任意对象,而无需知道其类型(即,您可以使用声明的对象类型引用类型系统中的每个项,甚至是使用包装器类的基元)。但是,在C++中没有OP语言,如没有java的通用基类。拥有通用基类的另一个好处是,处理超类的逻辑不必对顶级类进行特殊处理(通用基类、对象本身除外)。这就是我们在Java中称之为面向对象编程的公理。代码中的每个抽象都是一个对象。它包含一些适用于您在代码中使用的所有信息的内容: e

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

这是个好问题。Java选择将单个类作为所有对象的最终父类,这样就可以轻松地传递任意对象,而无需知道其类型(即,您可以使用声明的对象类型引用类型系统中的每个项,甚至是使用包装器类的基元)。但是,在C++中没有OP语言,如没有java的通用基类。拥有通用基类的另一个好处是,处理超类的逻辑不必对顶级类进行特殊处理(通用基类、对象本身除外)。

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

  • equals
    hashCode
    方法,用于在给定抽象中建立等式理论(参见相应的)
  • toString
    以人类可读(可能只有程序员可读)的格式表示对象(因为我们大多数人仍然使用显示器和键盘)
  • getClass
    提供对给定抽象的反射功能
  • 组织面向对象运行时的一些方法(垃圾收集、同步等)
如果你学习Java,最好先学习你所用的任何一本书的“继承”部分,然后自己回答这个问题。

我一下子就想到了

  • 将“Object”定义为根类可以确保VM可以依赖为equals、clone、hashcode等实用方法提供的接口

  • 垃圾收集器可以确保用户认为可协调的任何内容都可以在finalize方法中执行


  • 它为程序员创建的所有派生对象提供了一个模板。 每个用户定义对象可能需要的关键功能通过这种方式随时可用

    • 对象锁定(用于解决并发问题)

    • 克隆

    • 哈希代码生成
    说出更重要的

    Java类(隐式/显式)
    扩展对象
    ,原因如下:

    • Java需要在现有的每个平台上运行(无论是移动平台、Windows、Linux等),编写大量代码在每个平台上运行是一项任务。 因此,Java创建了
      native
      。这样,所有对象都将注册为JVM可以理解和执行的本机对象。不要忘记JVM是用C++编写的(不管它在平台上执行什么)。
    • 对于垃圾收集,JVM在不需要对象时调用
      finalize
      方法

    其余部分已经在这里提到了。

    java程序本质上是对

    方法和类

    该类继承了一些属性,这些属性构成了结构 稍后


    Object是基本类,所有类都是Object的子类。

    不太可能。请参阅C++的一个突出的例外。java也不例外。您可以将Java视为多根的,以原语作为根连接对象。(或者你可能会认为这是对对象天真设计的一点攻击。)你能解释一下第二个好处吗?@abson,基本上“super”关键字不需要以两种不同的方式实现,因为“super”总是指一些基本类型。这只是一个小小的好处。-1:“所有对象都注册为本机对象”?只有在故意使用JNI时才会发生这种情况。。。除非你有别的意思?另外,finalize方法也不能保证被调用。。。虽然这有点吹毛求疵。另外,JVM也不需要用C/C++编写——事实上,有一个非常酷的JVM是用java编写的,它可以自己运行。@Vuntic,如果JVM完全用java编写,它如何处理文件系统、文件描述符表、操作系统属性或任何特定于操作系统的属性?Java的设计目的不是了解它运行的是什么操作系统,而是独立运行。JVM必须做到这一点,除非它知道如何用java与机器程序集进行对话,否则翻译字节码以在操作系统上运行的唯一方法就是通过HAL运行它,我从未见过HAL是用java编写的(除非我错了)。这是可能的:。如果否决票没有根据,我表示歉意,但我发现这个答案不准确且令人困惑。@Sparkeshy,什么是不准确且令人困惑的?