父类是否还有父类???
有的,叫Object类,也叫根类,我们叫他上帝。是所有对象的超类或父类。
- 该类总定义了所有类都具有的功能,
- 隐式的构造方法
- 所有对对象都具备对象比较功能:equals( 与之比较的对象 ); 是同一个对象就输出true,不同对象输出为flase,当然要用我们自己输出一下。原理就是比较两个对象的地址是否相同(对象1 === 对象2 ),java中一切都是指针,所以 对象1 就是地址!!
- 如果想实现不一样的比较方法,比如值相等即相等;直接复写equals( Object obj )方法,代码如下:
class Demo{
private int num;
Demo(int num){
this.num = num;
}
//重写Object类的equals方法,让值相同,对象就相同;值不同,对象也就不同!!
public boolean equals(Object obj){ //Object obj = new Demo() 多态!!!!!
if(!(obj instanceof Demo)) //判断obj对象是否是Demo类
return false; //更为合理的做法是用异常处理,抛出异常!!
Demo d = (Demo)obj; //类型转换;只能父类对象转换为子类对像。
return this.num == d.num;
}
}
class Person{ //定义一个Person类,测试一下不同类的对象比较
}
class ObjectDemo{
public static void main(String[] args){
Demo d1 = new Demo(123);
Demo d2 = new Demo(23);
Person p1 = new Person();
System.out.println(d1.equals(d2));
System.out.println(d1.equals(p1)); //不同类之间的对象比较,对象一定不同,
System.out.println(d1.equals(d1)); //所以我们在equals(Object obj)的开头先判断一下是否是同个对象!!!
}
}
-
toSring类:返回该对象的字符串,任何对象都能转换为字符串,神奇吧!!!
- 实现:getClass().getName() + ‘@‘ +Integer.toHexString( hashCode() )
- 字符格式: Demo@7852e922(对象类型+@+哈希值(内存地址))
- 哈希值的方法:hashCode();出来的值是十进制的要转十六进制:Integer.toHexString(十进制的值)
- 地址值一般没什么意义;所以一般需要复写toString( )方法!!!
-
getClass( )
- Class a = new Class(); //定义类文件
- getClass( ).getName( )
-
hashCode( ) :
- 返回哈希值!!!
网友评论