Object类—复写equals方法,hashCode方法,toString方法

Object:所有类的根类。
Object是不断抽取而来,具备着所有对象都具备的共性内容。
class Person extends Object {
	private int age;

	Person(int age) {
		this.age = age;
	}

	/* 老方法:比较Person的年龄。是否是同龄人 */
	// public boolean compare(Person p) { return this.age ==
	// p.age; }

	/* 新方法:一般都会覆盖此方法,根据对象的特有内容,建立判断对象是否相同的依据。(常用复写equals) */
	public boolean equals(Object obj)// Object obj = p2;隐藏着向上转型
	{
		// 健壮性判断
		if (!(obj instanceof Person)) {
			throw new ClassCastException("类型错误");
		}
		Person p = (Person) obj;// 向下转型,否则无法调用Person的属性age
		return this.age == p.age;
	}

	/* 复写hashcode() */
	// public int hashCode() {
	// return age;
	// }

	/* 复写toString() */
	// public String toString() {
	// return "Person:" + "age=" + age;
	// }
}

class ObjectDemo {
	public static void main(String[] args) {
		Person p1 = new Person(60);
		Person p2 = new Person(20);
		// System.out.println(p1.equals(p2));

		// System.out.println(p1);// 默认调用p1.toString
		// System.out.println(Integer.toHexString(p1.hashCode()));

		/* 是不是同一个类 */
		// Class clazz1 = p1.getClass();
		// Class clazz2 = p2.getClass();
		// System.out.println(clazz1 == clazz2);
		// System.out.println(clazz1.getName());// Person

		// System.out.println(p1.toString());// Person@61de33
		// System.out.println(p1.getClass().getName() + "$" +
		// Integer.toHexString(p1.hashCode()));// Person$61de33

		// System.out.println("==:" + (p1 == p2));
		// System.out.println("equals:" + p1.equals(p2)); //
		// equals()方法,比较的是地址值。对于非字符串变量,equals比较的是内存的首地址,这时候和==是一样的,即比较两边指向的是不是同一个对象。
	}
}

  

 
posted @ 2017-03-18 11:52  Kkky  阅读(427)  评论(0编辑  收藏  举报