Object类

Object类是java中所有类的超类(根类)。

如:class A extends B

        class A

在根类中有几个方法是经常用到的,如hashCode,equals,toString等。

例如:

public class TextObject {
	public static void main(String[] args) {
		Student student = new Student("Kit", 21, false, "China");
		System.out.println(student);//这里要想运行成功,必须重写toString方法
		Student compare = new Student("Kit", 21, false, "China");
		Student compare1 = new Student("www", 43, true, "Americon");
		System.out.println(compare.equals(student));
		System.out.println(compare1.equals(student));
	}
}

class StudentMessage {
	public StudentMessage() {
		name = "sky";
		age = 22;
		sex = true;
		address = "China";
	}
	
	public StudentMessage(String name, int age,
			boolean sex, String address) {
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.address = address;
	}
	
	public String getName() {
		return name;
	}

	public int getAge() {
		return age;
	}

	public boolean isSex() {
		return sex;
	}

	public String getAddress() {
		return address;
	}

	private String name;
	private int age;
	private boolean sex;
	private String address;
}

class Student extends StudentMessage {
	public Student(String name, int age, boolean sex, String address) {
		super(name, age, sex, address);
	}
	
	public String toString() {//这里重写了Oject类的toString方法
		return this.getName() + " " + this.getAge() + " "
				+ this.isSex() + " " + this.getAddress();
	}
	
	public boolean equals(Object obj) {//重写Oject类的equals方法
		if (this == obj) return true;
		if (obj == null) return false;
		if (obj instanceof Student) {
			Student s = (Student) obj;
			return s.getAddress() == this.getAddress() && s.isSex() == this.isSex()
					&& s.getAge() == this.getAge() && s.getName() == this.getName();
		}
		else return false;
	}
}


在toString中,如果想在将类型名打印出来(如Student),可这样做:student.getClass().getName(),得到的将会是Student;

在equals方法中,第一,我们要判断是不是同一对象;第二,判断是不是被比较的对象为空;第三,判断两对象的内部是否相同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章