您的位置:首页 > 移动开发 > Objective-C

[置顶] JavaSE学习笔记_6:Java-Object类

2016-03-01 23:57 405 查看
Java-Object类
 
Object类是所有对象的直接或者间接父类,传说中的上帝。该类中定义的肯定是所有对象都具备的功能。Object:根类。它不需要子类显示地去继承它,却也一样能用它里边的东西。

1、Object类-equals()

equals方法比较的是两者的值是否相等。接收的参数是一个对象。如:

Demo d1=new Demo();

Demo d2=new Demo();

d1.equals(d2);等价于:(d1==d2)?

equals()的原型:public void equals(Object obj)。

因此涉及到了多态。

想在子类想比较其他的东西,子类没有必要定义新的功能,直接沿袭父类的功能,定义自己特有的内容。主要要向下转型的情况。

2、Object类-toString()

原型:public String toString()。

子类对象调用该方法返回一串字符串。

如:

class Demo

{

private int num;

Demo(int num)

{

This.num=num;

}

}

Class ObjectDemo

{

public static void mian(String[] args)

{

Demo d1=new Demo(4);

System.out.println(d1.toString());

}

}

编译运行结果为:Demo@c17164。

 

(1)Demo:是类文件的名字。

我们知道很多类文件也可以算是一类事物,它们也有共性,比如:类文件名、有构造方法等也可以向上抽取。因此Class类就是它们所向上抽取的类。class来描述这些类文件,当中定义的有getName(),getMethod()。这个Demo可以通过下列代码得出:

Class c=d1.getClass();

c.getName()

因此可以知道toString()中有这些代码存在。

 

(2)17164:是对象d1的地址。(十六进制形式)每一个对象都有一个地址(哈希值),可以通过调用hashCode()(它也被定义在了Object类当中,原型:int hashCode())来计算出来。因此可以知道toString()调用了hashCode()。这个值可以通过下列代码得出:Interger.toHexString(d1.hashCode())

 

综上所述,toString()的方法体中一定有:

Class c=d1.getClass();

return c.getName()+”@”+Interger.toHexString(d1.hashCode())

当然,toSting()也可以被子类复写。

 

2015-11-21至2015-11-21著
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: