【16-1】Object概述&Object-equals方法&toString方法。 ========================================================================================== class Person extends Object { private int age; Person(int age) { this.age = age; } public boolean equals(Object obj) { if(this == obj) return true; if(!(obj instanceof Person)) throw new ClassCastException("类型是不对的,请改正!"); Person p = (Person)obj; return this.age == p.age; } } class ObjectTest { public static void main(String[] args) { Person p = new Person(12); Person p1 = new Person(13); System.out.println(p.equals(p1)); } } =========================================================================================== //Object概述&Object-equals方法&toString方法 /* Object类中的常用方法。 Object类是所有类的根类,定义了所有对象都具备的功能。 API(应用程序接口)文档 //可以在JDK目录下的srcjavalangobject里面查看源代码 */ class Person extends Object { private int age; Person(int age) { this.age = age; } //判断是否是同龄人,这个方法也是在比较两个Person对象是否相等。 //注意:Person类中是否有比较两个Person对象相等的方法?有的,因为继承Object,他本身就具备equals方法 //既然有,还需要定义compare方法吗?不需要! //但是,equals方法判断的是地址,不是我们所需要的内容。 //咋办?继续使用object的equals方法,但是建立子类的自己额内容,这就是传说中的重写。 //重写。 //记住:以后要判断对象是否相同,就需要覆盖equals方法。 //判断是否是同龄人 public boolean equals(Object obj) { //建立Person自己的判断相同的依据,判断年龄是否相相同。 //return this.age == p.age; //obj所属类型Object,Object中没有定义age,所以编译失败。 //如果调用该方法的对象和传递进来的对象是同一个,就不要转型和判断,直接返回true. if(this == obj) return true; //age是Person类型的属性,既然要用到子类型的内容,需要向下转型。 if(!(obj instanceof Person)) // return false; throw new ClassCastException("类型是不对的!请改正"); Person p = (Person)obj; return this.age == p.age; } public String toString() { return "person[age = "+age+"]"; } /* public boolean compare(Person p) { return this.age == p.age; }*/ } class Dog { } class ObjectTest { public static void main(String[] args) { Person p1 = new Person(12); Person p2 = new Person(14); //p1.equals(new Dog()); //System.out.println(p1.equals(p1)); System.out.println(p1.toString()); System.out.println(p2); //System.out.println(p1.compare(p2)); //System.out.println(p1==p2); //System.out.println(p1.equals(p2)); } }