java中Object類是怎么回事
Object類的作用:m a r k - t o- w i n: 在java中,因為所有的類都有共性,所以java的締造者們把java設計成這樣:所有的類都是Object類的直接或間接子類,而且把上述所有類的共性都放在Object類中。這樣就可以達到代碼重用。All classes in java are subclasses of Object class。
馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。
Object類的equals和toString的用法:
下面一組兩個例子,馬克-to-win:第一個例子是用的父類Object的equals和toString方法,Object的equals是比較對象在內存當中的地址,當然不一樣了。而第二個例子Company的equals方法是自己寫的,比較的他們的name屬性,只要name一樣,對象的equals返回的就是真。println (c1);會導致c1的toString被調用(這是語法),第一個例子中c1因為沒有toString方法,所以就用基類Object的toString方法。另外,Object的 toString方法打印出來就是Company@1b67f74,這是Sun公司編的。而后面一個例子的toString方法時咱們自己編的。
例:2.1.1---本章源碼
class CompanyMark_to_win {
private String name;
CompanyMark_to_win(String name) {
this.name = name;
}
/*
public String toString() {
return name;
}
public boolean equals(Object o) {
if (!(o instanceof CompanyMark_to_win))
return false;
CompanyMark_to_win c = (CompanyMark_to_win) o;
return name.equals(c.name);
}
*/
}
public class Test {
public static void main(String[] args) {
CompanyMark_to_win c1 = new CompanyMark_to_win("Abc");
CompanyMark_to_win c2 = new CompanyMark_to_win("Abc");
CompanyMark_to_win c3 = new CompanyMark_to_win("xyz");
System.out.println("c1.equals(c2): " + c1.equals(c2));
System.out.println("c1.equals(c3): " + c1.equals(c3));
System.out.println(c1);
}
}
結果:
c1.equals(c2): false
c1.equals(c3): false
CompanyMark_to_win@1b67f74
例2.1.2---本章源碼
class CompanyMark_to_win {
private String name;
CompanyMark_to_win(String name) {
this.name = name;
}
/*System.out.println會調用toString這個方法。暫時死記住,這是語法*/
public String toString() {
return name;
}
public boolean equals(Object o) {
/*下句話,假如不是CompanyMark_to_win類型,馬克-to-win:就返回假*/
if (!(o instanceof CompanyMark_to_win)) return false;
CompanyMark_to_win c = (CompanyMark_to_win) o;//downcast,向下轉型
return name.equals(c.name);//這個equals是String的方法
}
}
public class Test {
public static void main(String[] args) {
CompanyMark_to_win c1 = new CompanyMark_to_win("Abc");
CompanyMark_to_win c2 = new CompanyMark_to_win("Abc");
CompanyMark_to_win c3 = new CompanyMark_to_win("xyz");
System.out.println("c1.equals(c2): " + c1.equals(c2));//這個equals會調用子類CompanyMark_to_win的方法,馬克-to-win:
System.out.println("c1.equals(c3): " + c1.equals(c3));
System.out.println(c1);//這個println會調用子類CompanyMark_to_win的toString方法
}
}
result is:
c1.equals(c2): true
c1.equals(c3): false
Abc