日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Java_Object类

發布時間:2025/3/17 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java_Object类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

3.2、Object類(重點)

???????? 在Java的定義之中,除了Object類之外,所有的類實際上都存在繼承關系,即:如果現在定義了一個類,沒有默認繼承任何一個父類的話,則默認將繼承Object類,以下兩種類的最終定義效果是完全一樣的。

class Person {}

class Person extends Object {}

???????? 那么按照這樣的方式理解,即:Object類可以接收所有類的實例化對象。

class Person {}

public class TestDemo {

???????? public static void main(String args[]) {

?????????????????? Object obj = new Person() ;

?????????????????? Person per = (Person) obj ;

???????? }

}

???????? 如果在日后的開發之中,一個操作可能接收所有類的對象,那么使用Object作為參數最合適。

???????? 除此之外,對于任意的一個簡單Java類而言,理論上講應該覆寫Object類之中的三個方法:

?????????????????? · 取得對象信息:public String toString();

?????????????????? · 對象比較:public boolean equals(Object obj);

?????????????????? · 取得哈希碼:public int hashCode()。

3.2.1 、取得對象信息:toString()

???????? 在之前提示過,如果說現在一個對象直接輸出,那么默認情況下輸出的是一個對象的地址。

class Person {}

public class TestDemo {

???????? public static void main(String args[]) {

?????????????????? Person per = new Person() ;

?????????????????? System.out.println(per) ;??????? // Person@ 1f 6226

?????????????????? System.out.println(per.toString()) ; // Person@ 1f 6226

???????? }

}

???????? 現在可以清楚地方發現,如果直接輸出一個類的對象,那么和這個對象調用toString()方法的結果是完全一樣的,那么就可以得出一個結論:對象直接輸出默認調用了Object類之中的toString()方法,但是默認的toString()方法有一個特點:為了適用于所有的子類,那么在toString()默認情況下就是輸出了對象地址,當然,每一個子類也可以自己進行修改。

class Person {

???????? private String name ;

???????? private int age ;

???????? public Person(String name,int age) {

?????????????????? this.name = name ;

?????????????????? this.age = age ;

???????? }

???????? public String toString() {?????? // 方法覆寫

?????????????????? return "姓名:" + this.name + ",年齡:" + this.age ;

???????? }

}

public class TestDemo {

???????? public static void main(String args[]) {

?????????????????? Person per = new Person("張三",20) ;

?????????????????? System.out.println(per) ;??????? // Person@ 1f 6226

???????? }

}

3.2.2 、對象比較:equals()

???????? 實際上對于equals()方法應該并不陌生了,這個方法在String類中見過,String是Object類的子類,所以String類的equals()方法就是覆寫了Object類中的equals()方法,在Object類之中,默認的equals()方法實現比較的是兩個對象的內存地址數值,但是并不符合于真正的對象比較需要。對象比較之前也寫過,但是之前是自己定義了一個新的方法名稱,今天可以給出標準的方法名稱:equals()。

class Person {

???????? private String name ;

???????? private int age ;

???????? public Person(String name,int age) {

?????????????????? this.name = name ;

?????????????????? this.age = age ;

???????? }

???????? public String toString() {?????? // 方法覆寫

?????????????????? return "姓名:" + this.name + ",年齡:" + this.age ;

???????? }

???????? public boolean equals(Object obj) {

?????????????????? if (this == obj) {

??????????????????????????? return true ;

?????????????????? }

?????????????????? if (obj == null) {

??????????????????????????? return false ;

?????????????????? }

?????????????????? if (! (obj instanceof Person)) {??????? // 不是本類對象

??????????????????????????? return false ;

?????????????????? }

?????????????????? // 因為name和age屬性是在Person類中定義,而Object類沒有

?????????????????? Person per = (Person) obj ;

?????????????????? if (this.name.equals(per.name) && this.age == per.age) {

??????????????????????????? return true ;

?????????????????? }

?????????????????? return false ;

???????? }

}

public class TestDemo {

???????? public static void main(String args[]) {

?????????????????? Person per1 = new Person("張三",20) ;

?????????????????? Person per2 = new Person("張三",20) ;

?????????????????? System.out.println(per1.equals("Hello")) ;

?????????????????? System.out.println(per1.equals(per2)) ;

???????? }

}

3.2.3 、使用Object接收所有的引用數據類型

???????? Object是所有類的父類,那么Object類可以接收所有類的對象,但是在Java設計的時候,考慮到引用數據類型的特殊性,所以Object類實際上是可以接收所有引用數據類型的數據,這就包括了數組、接口、類。

范例:使用Object類接收數組,數組和Object沒有任何明確的定義關系

public class TestDemo {

???????? public static void main(String args[]) {

?????????????????? Object obj = new int [] {1,2,3} ;???? // 接收數組

?????????????????? if (obj instanceof int []) {

??????????????????????????? int [] data = (int []) obj ;???????? // 向下轉型

??????????????????????????? for (int x = 0 ; x < data.length ; x ++) {

???????????????????????????????????? System.out.println(data[x]) ;

??????????????????????????? }

?????????????????? }

???????? }

}

范例:接收接口對象,從接口定義而言,它是不能去繼承一個父類的,但是由于接口依然屬于引用類型,所以即使沒有繼承類,也可以使用Object接收。

interface Message {

}

class MessageImpl implements Message {??????? // 定義接口子類

???????? public String toString() {

?????????????????? return "New Message : Hello World ." ;

???????? }

}

public class TestDemo {

???????? public static void main(String args[]) {

?????????????????? Message msg = new MessageImpl() ;????? // 向上轉型

?????????????????? Object obj = msg ;??????? // 使用Object接收接口對象,向上轉型

?????????????????? Message temp = (Message) obj ;??? // 向下轉型

?????????????????? System.out.println(temp) ;???? // toString()

???????? }

}

???????? 從代碼上講,以上只能算是一個固定的操作概念,不過從實際來講,因為有了Object類的出現,所以的操作的數據就可以達到統一,那么之前的鏈表程序,就應該變的很方便了,所有的數據都使用Object接收,所有的對象比較(刪除、查找)都可以使用equals()。

轉載于:https://www.cnblogs.com/guwenren/archive/2013/04/12/3016934.html

總結

以上是生活随笔為你收集整理的Java_Object类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。