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方法中,第一,我們要判斷是不是同一對象;第二,判斷是不是被比較的對象爲空;第三,判斷兩對象的內部是否相同。