黑马程序员技术交流社区

标题: 帮忙解释下object!! [打印本页]

作者: darkpiece    时间: 2014-1-21 15:41
标题: 帮忙解释下object!!
本帖最后由 darkpiece 于 2014-1-21 16:21 编辑

是抽象类吗?能否覆盖object的方法?如果object类是具体的,为什么会允许去创建object的对象??
作者: 透过生活    时间: 2014-1-21 15:46
Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。

在不明确给出超类的情况下,Java会自动把Object作为要定义类的超类。

可以使用类型为Object的变量指向任意类型的对象。

Object类有一个默认构造方法pubilc Object(),在构造子类实例时,都会先调用这个默认构造方法。

Object类的变量只能用作各种值的通用持有者。要对他们进行任何专门的操作,都需要知道它们的原始类型并进行类型转换。例如:

Object obj = new MyObject();

MyObject x = (MyObject)obj
作者: 奋斗的小雨    时间: 2014-1-21 16:08
虽然还没学到这,但是来事来顶一下.
作者: 三十而立    时间: 2014-1-21 16:11
本帖最后由 三十而立 于 2014-1-21 16:14 编辑

1. Object是抽象类吗?
Object不是抽象类
(1)抽象类需要有abstract关键字修饰,抽象类中不可以建立对象,因为没有意义。
(2)Object有空参数构造函数,因此可以建立对象。
2. 能否覆盖object的方法?
可以的。
在String以及框架类中,都会重写hashcode和equals方法。
因为要是在自己特有功能的比较,需要复写父类中的equals比较的地址值。
为了更有效率的比较两个对象,需要复写hashcode。
3. 如果Object类是具体的,为什么会允许去创建object的对象?
Object类中有公共的构造函数public Object(),因此,可以建立该类对象。


作者: darkpiece    时间: 2014-1-21 16:21
三十而立 发表于 2014-1-21 16:11
1. Object是抽象类吗?
Object不是抽象类
(1)抽象类需要有abstract关键字修饰,抽象类中不可以建立对象, ...

nice!谢谢
作者: 三十而立    时间: 2014-1-21 16:31
darkpiece 发表于 2014-1-21 16:21
nice!谢谢

客气客气!
作者: 廉伟杰    时间: 2014-1-21 20:20
本帖最后由 廉伟杰 于 2014-1-21 20:21 编辑

类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法常用的三个方法:boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。   equlas默认的比较的是  堆里地址,和 == 一样,都是比较地址

一般情况下子类根据自身情况重新覆写该方法,如String 覆写了 Object的equals方法:只比较字符的序列是否相同(这类需要看源代码)

int hashCode();  返回对象的一个十进制的hash值,每个对象的hashCode都不一样

Object类的 toString()方法:“对象的描述”。   建议所有类都覆写此方法       直接打印输出对象时,会调用该对象的toString()方法。








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2