標籤:轉型 boolean 形式 ali info 根據 傳遞 其他 因此
一、概念
Object類是Java語言中的根類,即所有類的父類。它中描述的所有方法子類都可以使用。所有類在建立對象的時候,最終找的父類就是Object。在Object類眾多方法中,我們先學習equals方法與toString方法,其他方法後面課程中會陸續學到。
二、equals方法
equals方法,用於比較兩個對象是否相同,它其實就是使用兩個對象的記憶體位址在比較。Object類中的equals方法內部使用的就是==比較子。在開發中要比較兩個對象是否相同,經常會根據對象中的屬性值進行比較,也就是在開發經常需要子類重寫equals方法根據對象的屬性值進行比較。如下代碼示範:
1 /* 2 描述人這個類,並定義功能根據年齡判斷是否是同齡人 3 由於要根據指定類的屬性進行比較,這時只要覆蓋Object中的equals方法 4 在方法體中根據類的屬性值進行比較 5 */ 6 class Person extends Object{ 7 int age ; 8 //複寫父類的equals方法,實現自己的比較方式 9 public boolean equals(Object obj) {10 //判斷當前調用equals方法的對象和傳遞進來的對象是否是同一個11 if(this == obj){12 return true;13 }14 //判斷傳遞進來的對象是否是Person類型15 if(!(obj instanceof Person)){16 return false;17 }18 //將obj向下轉型為Perosn引用,訪問其屬性19 Person p = (Person)obj;20 return this.age == p.age;21 }22 }
注意:在複寫Object中的equals方法時,一定要注意public boolean equals(Object obj)的參數是Object類型,在調用對象的屬性時,一定要進行類型轉換,在轉換之前必須進行類型判斷。
三、toString方法
toString方法返回該對象的字串表示,其實該字串內容就是對象的類型[email protected]+記憶體位址值。
由於toString方法返回的結果是記憶體位址,而在開發中,經常需要按照對象的屬性得到相應的字串表現形式,因此也需要重寫它。
1 class Person extends Object{2 int age ;3 //根據Person類的屬性重寫toString方法4 public String toString() {5 return "Person [age=" + age + "]";6 }7 }
例如:
Person類
1 public class Person { 2 private String name; 3 private int age; 4 Person(){ 5 6 } 7 Person(String name,int age){ 8 this.name=name; 9 this.age=age;10 }11 12 public boolean equals(Object obj) {//Object obj=new Person();13 //調用子類都有的成員,需要向下轉型14 if(obj==null){15 return false;16 }17 if(obj==this){18 return true;19 }20 if(obj instanceof Person ){21 Person p=(Person)obj;22 return this.age==p.age;23 }24 return false;25 }26 @Override27 public String toString() {28 return "Person [name=" + name + ", age=" + age + "]";29 }30 31 /*public String toString() {32 33 return "name:"+name+",age:"+age;34 }*/35 36 }
測試類別
1 public class Demo01 { 2 3 public static void main(String[] args) { 4 Person p1=new Person("熊大",2); 5 Person p2=new Person("熊二",2); 6 ArrayList<String> list=new ArrayList<String>(); 7 System.out.println(p1==p2); //false 8 System.out.println(p1.equals(list)); //false 9 System.out.println(p1);//預設列印tostring() 子類方法重寫後 就變成子類重寫方法10 System.out.println(p2);11 }
java--面對對象之Object類