跳到主要內容

物件導向觀念深入2 - Object 類別


頻道需要你的支持謝謝你成為我們的會員(加入會員)

影片1 了解 Object 類別並 Override toString()



影片2 利用多型的觀念,寫出正確的 equals() 與 hashCode() 


範例


Object 類別是 Java 相當特殊的一個類別。它是所有類別的“根類別”。也就是說 Java 中的何任類別往上追溯到最上層類別都一定是 Object 類別。

建立新類別的時候,如果沒有指定上層類別,編譯器會自動在類別名稱後面加上 extends Object。若有指定上層類別。當然是以指定的類別為上層類別,但上層類別有沒有上層類別呢,一定有。因為最少有一個上層類別:Object

所以說,Java 中的類別,除了 Object 之外。都至少有一個父類別

 

Object 類別的第一個用意,是類別中宣告了 Java 希望環境中的每一個類別都一定要有的方法。因為“繼承了,就有了”。所以 Java 中的任何一個類別都會擁有這一些方法。至於擁有了以後要不要 Override 則由開發人員自行決定。重點是,就算沒有 Override,也一定有那一些方法

 

Object 類別的另外一個用意,是搭配多型使用。因為“繼承了,就是了, 也就是說:Java 中的類別,都 is-a Object。所以,只要是用 Object 宣告的變數,就可以指派任何類別的物件給它;只要是用 Object 宣告的集合,就代表這個集合中可以是任何類別的物件。只要是用Object宣告的參數。方法呼叫時,就可以在小括號中指派任何類別的物件。

 

Java 希望開發人員了解而且 Override 的三個方法

1.          String toString()
在部份情境中,環境會呼叫物件的 toString

2.          boolean equals(Object o)
若沒有 Override,預設為 == 的功能

3.          int hashCode()
2
個任何類別的物件,只要 equals 的值為 true,則 hashCode 的值一定相等