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著