java三大特性
繼承
繼承更加容易實現類的擴展。使用extends
註:
- Java中類只有單繼承,接口有多繼承。
- 子類繼承父類,可以得到父類的全部屬性和方法 (除了父類的構造方法),但不見得可以直接訪問(比如,父類私有的屬性和方法)。
- 所有類的父類:Object。
- instanceof是二元運算符,左邊是對象,右邊是類;當對象是右面類或子類所創建對象時,返回true;否則,返回false。
方法的重寫override
子類通過重寫父類的方法,可以用自身的行為替換父類的行為。方法的重寫是實現多態的必要條件。
方法的重寫需要符合下面的三個要點:
- “==”: 方法名、形參列表相同。
- “≤”:返回值類型和聲明異常類型,子類小於等於父類。
- “≥”: 訪問權限,子類大於等於父類。
==和equals方法
“==”代表比較雙方是否相同。如果是基本類型則表示值相等,如果是引用類型則表示地址相等
Object 的 equals 方法默認就是比較兩個對象的hashcode,是同一個對象的引用時返回 true 否則返回 false。但是,我們可以根據我們自己的要求重寫equals方法。
super
super是直接父類對象的引用。可以通過super來訪問父類中被子類覆蓋的方法或屬性。
若是構造方法的第一行代碼沒有顯式的調用super(...)或者this(...);那麽Java默認都會調用super(),含義是調用父類的無參數構造方法。
構造方法調用順序:
構造方法第一句總是:super(…)來調用父類對應的構造方法。所以,流程就是:先向上追溯到Object,然後再依次向下執行類的初始化塊和構造方法,直到當前子類為止。
註:靜態初始化塊調用順序,與構造方法調用順序一樣,不再重復。
封裝
需要讓用戶知道的才暴露出來,不需要讓用戶知道的全部隱藏起來,這就是封裝。封裝就是把對象的屬性和操作結合為一個獨立的整體,並盡可能隱藏對象的內部實現細節。
封裝的實現——訪問控制符
private 表示私有,只有自己類能訪問
default表示沒有修飾符修飾,只有同一個包的類能訪問
protected表示可以被同一個包的類以及其他包中的子類訪問
public表示可以被該項目的所有包中的所有類訪問
類的屬性的處理:
一般使用private訪問權限。
提供相應的get/set方法來訪問相關屬性,這些方法通常是public修飾的,以提供對屬性的賦值與讀取操作(註意:boolean變量的get方法是is開頭!)。
一些只用於本類的輔助性方法可以用private修飾,希望其他類調用的方法用public修飾。
多態
多態指的是同一個方法調用,由於對象不同可能會有不同的行為。
註:
- 多態是方法的多態,不是屬性的多態(多態與屬性無關)。
- 多態的存在要有3個必要條件:繼承,方法重寫,父類引用指向子類對象。
- 父類引用指向子類對象後,用該父類引用調用子類重寫的方法,此時多態就出現了。
對象的轉型(casting)
父類引用指向子類對象,我們稱這個過程為向上轉型,屬於自動類型轉換。
向上轉型後的父類引用變量只能調用它編譯類型的方法,不能調用它運行時類型的方法。這時,我們就需要進行類型的強制轉換,我們稱之為向下轉型!
final關鍵字
- 修飾變量: 被他修飾的變量不可改變。一旦賦了初值,就不能被重新賦值。
- 修飾方法:該方法不可被子類重寫。但是可以被重載!
- 修飾類: 修飾的類不能被繼承。比如:Math、String等。
java三大特性