为什么Java中的每个对象都隐含地扩展java.lang.Object类? [英] Why does every object in Java implicitly extend java.lang.Object class?
问题描述
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屋!