java--面對對象之Object類
阿新 • • 發佈:2018-07-31
string 用兩個 運算符 類的屬性 表現 size com div 自己的
一、概念
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方法返回該對象的字符串表示,其實該字符串內容就是對象的類型+@+內存地址值。
由於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 @Override 27 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類