java三大特性
- 封裝:encapsulation 隱藏信息
- 實現專業的分工,工作中的分模塊 分功能開發
- 隱藏信息和實現細節,使得對代碼的修改更加安全和容易
- 繼承 :inheritance 延續+擴展父類信息
- 實現代碼複用,延續+擴展父類信息
- 多態:polymorphism 模糊測羅 以不變應萬變
- 以不變應萬變
封裝
- 概念
- 把對象的屬性和行爲結合爲一個獨立的整體,並儘可能隱藏對象的內部實現細節
- 好處
- 提高代碼的複用性和安全性
設計原則
- 把不想外界知道的實現細節隱藏起來,向外提供公共的訪問方法
javabean
- 一個對象實例的封裝類
- 必須爲public class
- 必須有一個無參構造器
- 所有的屬性必須private修飾進行封裝
- 爲屬性提供公共的setter和gettet方法
繼承
概念
- 在一個現有類的基礎上構建一個新的類,子類會自動擁有父類所有可繼承的屬性和方法
- 繼承的格式
- class 子類 extends 父類
- 好處
- 提高代碼複用性,提高開發效率
- 類與類之間產生關係,提供了多態的前提
- 注意事項
- 單繼承,一個類只能繼承一個父類
- 多個子類可以繼承同一個父類
- 可以多層繼承
- 父子類成員變量
- 子類可以有和父類同名的屬性,不會互相影響
- 子類中可以直接訪問父類非私有屬性
- 若子類中也有同名屬性,可用super。屬性名來訪問父類屬性
- 父子類中的方法
- 子類中可以有和父類同名的方法,不會互相影響
- 子類有父類中可非私有的方法
- 調用方法時,會先在子類中找;如果子類沒有,會不斷向父類找
- 特殊情況:方法的重寫
- 方法重寫特點:
- 必須保證權限大於等於父類權限
- 方法名稱 參數列表以及返回值類型一致,權限可以兼容
- 方法的重寫
- 在子類中可以根據需要對從父類繼承來的方法進行重寫
- 具有相同的方法名稱 參數列表和返回值類型
- 屬性不會重寫
- 靜態方法不會重寫
- final修飾的類不能繼承,修飾的方法不能重寫
- 私有方法不會重寫
super關鍵字
- 用來代表父類對象
繼承中的構造方法
- 子類構造中必須調用父類的構造器
- 子類可以在這的構造器中用super()調用父類的構造器;用this()代表子類其他構造器
- super()必須寫子類構造器的第一行
- 子類構造器中無顯示調用父類的構造器,jvm會默認調用父類構造器
子類無顯示調用父誒構造器,而父類又沒有無參構造器會報錯
## 對象轉型 ##
一個父類的引用類型變量可以指向子類的對象
一個父類的引用不可以訪問其子類對象的新增成員
多態
- 概念
- 父類引用變量可以指向子類對象,父類在調用方法時實際會調用子類重寫的方法
- 成員變量是父類的成員變量
- 調用的方法是子類重寫後的方法
- 編譯看左邊,運行看右邊
- 多態的好處
- 隱藏子類類型,提高代碼的擴展性
壞處
- 只能使用父類已有的功能,無法開拓新功能
多態的條件
- 父子類
- 父類引用指向子類對象
- 方法重寫
- 靜態綁定
- 在編譯器完成,可以提高代碼的執行速度
- 靜態方法
- 構造器
- private方法
- 用關鍵字super調用的方法
- 動態綁定
- 在運行期間,根據對象的實際類型調用相應的方法,降低了代碼的執行速度
- 相同的父類對象,調用相同的方法,參數也相同,但是實際運行的方法不同。