/*
* Object :是所有对象的直接后者简介父类 传说中的上帝 超类
* 该类定义的肯定是所有对象都具备的功能
* java认为所有对象都可以进行比较 比较的是内存地址
*
* Object类中已经提供了对对象是否相同的比较方法
*
* 如果自定义类中有比较相同的方法 没有必要重新定义
* 只要沿袭父类中的功能 建立自己持有比较内容即可 这就是覆盖
*
* toString(); 返回该类型的字符串表示
* toClass();返回类型是class
* */
public class ObjectDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//Demo1 d1 = new Demo1();
//Demo1 d2 = new Demo1();
//Demo1 d3 = d1;
//System.out.println(d1.equals(d2));//false 比较的内存地址值
//System.out.println(d1.equals(d3));//ture
// Person p1 = new Person();
// Person p2 = new Person();
// System.out.println(“Person: “+p1.equals(p2));
Demo1 d1 = new Demo1(2);
Demo1 d2 = new Demo1(6);
System.out.println(Integer.toHexString(d1.hashCode()));
System.out.println(d1.toString()); //Demo1@18a992f 内存地址
//System.out.println(d1.compare(d2));
System.out.println(d1.equals(d2));
Person p = new Person();
//System.out.println(d1.equals(p));//编译可以通过 但转换类型异常
}
}
class Demo1{// extends Object
private int num;
Demo1(int num){
this.num = num;
}
/*public boolean compare(Demo1 d){
return this.num == d.num;
}*/
public boolean equals(Object obj){
if(!(obj instanceof Demo))
return false;
Demo1 d = (Demo1)obj;//将Object类转化到Demo1类当中
return this.num == d.num;//Object里面没有num
}
}
class Person{
}