为什么Java中的每个对象都隐含地扩展java.lang.Object类? [英] Why does every object in Java implicitly extend java.lang.Object class?

查看:114
本文介绍了为什么Java中的每个对象都隐含地扩展java.lang.Object类?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在Java编程了很长一段时间,但是当我试图解释一个 java.lang.Object 类是给朋友时,我不能来不止一个简单的单行:


Java中的所有对象都扩展了 java.lang.Object 隐含


我不太确定为什么要这样做。



所以,我查看了 GrepCode ,希望能找到一些线索。现在我知道一个 java.lang.Object 是什么,它做什么,我想知道是否有任何具体的原因,为什么它是这样设计的。



我的问题仍然存在:为什么每个对象都要扩展 java.lang.Object

解决方案

我会说,原因是为了在Java中为所有对象提供一个通用的API来支持基本功能,如




  • 同步 - 等待通知 notifyAll

  • 垃圾收集 - finalize

  • 收藏支持 - hashCode 等于

  • 对象克隆 - 克隆



每个对象




  • 有一个它属于的类 - getClass

  • 可以将自己表示为一个字符串,因为我们是
    人类,可以读取字符串 - toString


I have been programming in Java for quite some time, but when I tried to explain what an java.lang.Object class is to a friend, I could not come up with more than a simple one-liner:

All objects in Java extend java.lang.Object implicitly

I was not quite sure why it should do so.

So, I looked upon the source code on GrepCode, hoping that I can find some clues. Now I know what a java.lang.Object is and what it does, I want to know if there was any specific reason as to why it was designed this way.

My question still prevails: why should every object extend java.lang.Object?

解决方案

I would say that the reason is to have a common API for all objects in java to supports basic functionality like

  • synchronization - wait, notify, notifyAll
  • garbage collection - finalize
  • collection support - hashCode, equals
  • object cloning - clone

And every object

  • has a class it belongs to - getClass
  • can represent itself as a string, because we are humans and can read strings - toString

这篇关于为什么Java中的每个对象都隐含地扩展java.lang.Object类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆