java面向物件的3大特徵——封裝,繼承,多型
封裝:
封裝的概念:將類的某些資訊隱藏在類內部,不允許外部程式直接訪問,而是通過該類提供的方法來實現對隱藏資訊的操作和訪問
封裝的兩大原則:
1)把儘可能多的東西藏起來,對外提供便捷的介面
2)把所有的屬性藏起來
封裝的步驟:
1)修改屬性的可見性:把屬性設為private
2)建立公有的getter/setter方法:用於屬性的讀寫
3)在getter/setter方法中加入屬性控制語句:對屬性值的合法性進行判斷
封裝的好處:
1)便於使用者正確使用系統,防止錯誤修改屬性
2)有助於系統之間的鬆耦合,提高系統獨立性
3)提高軟體的可重用性
4)降低了構建大型系統的風險
封裝的方法:
1)屬性隱藏(private)
2)包機制(package)
繼承:
繼承的概念:子類繼承父類的特性,擴充套件父類的功能
關鍵字:extends
繼承的注意事項:
1)private成員不能被繼承
2)構造不能繼承只能呼叫
多型:
多型的概念:父類的引用指向子類的物件(向上轉型),同一個操作,根據指向的物件不同而產生不同的結果。方法重寫是實現多型的基礎
java中實現多型的機制:父類或介面定義的引用變數可以指向子類或具體實現類的例項物件,而程式呼叫的方法在執行期才動態繫結。
多型應用場景:
1)使用父類作為方法的形參(寵物看病)
2)使用父類作為方法的返回值(簡單工廠模式)
拓展:
1.向上轉型:父類的引用指向子類的物件,自動型別轉換。此時父類的引用無法呼叫子類特有的方法
例如:Pet dog = new Dog();
2.向下轉型:子類的引用指向父類的物件,強制型別轉換。
例如:Dog d = (Dog)dog;
3.動態繫結與靜態繫結:
1)例項方法(動態繫結機制):與引用變數實際引用的物件繫結.呼叫重寫後的方法,由執行時的jvm決定
2)靜態方法(靜態繫結機制):與引用變數所宣告的型別繫結.編譯階段繫結
3)成員變數(靜態變數和例項變數,靜態繫結機制):與引用變數所宣告的型別繫結.編譯階段繫結