封裝
封裝按照我個人的理解,
- 將屬性私有化,
- 提供相應的getters和setters方法,
- 重toString方法
- 根據相關業務重載構造函數
優點:
- 屏蔽細節
- 提高安全性
在繼承中涉及到構造方法,構造方法沒有返回值類型,默認不寫時JVM會默認加上無參構造器,如果要使用帶參的構造方法,一定要寫出無參構造方法,這其中涉及到方法的重載
方法的重載
在同一個類中,方法名相同,形參類型不同(個數或類型) ,與返回值類型和權限修飾符無關;
繼承
繼承:在一個類可以繼承另一個類的屬性和方法,子類可以選擇覆蓋父類的方法,並在這個基礎上擴展,可以繼承一個普通類 抽象類 或接口;繼承類通過extend 實現就接口通過implements實現
抽象類
抽象類是使用abstract修飾的類,其中會包含抽象方法, 抽象方法使用abstract修飾的方法,只有方法名,沒有方法體;
抽象類與抽象方法之間
抽象類中可能會有抽象方法,一個類中有抽象方法那么這個類一定是抽象類;抽象方法存在與抽象類或接口
抽象類也是類,有構造方法,但是不能實例化對象,其中同樣有實例變量,實例方法
如果一個抽象類的子類沒有完全重寫父類的抽象方法那么這個子類還是一個抽象方法,
抽象類只能單繼承,也就是說一個子類只有一個父類
所有類的最終父類(超類,基類)都是Object,
接口:
使用interface 定義接口,其中包含抽象方法,可以使用implement實現多個接口,重寫接口的抽象方法
接口的特點
- 接口的權限修飾符只有public和默認
- 接口可以繼承多個接口,但不能繼承類
- 接口不能變量,只能定義常量,默認會加上public static static
- 接口中的方法不能使用private protect static final修飾編譯會報錯
- 在JDK1.8后接口中可以定義實例方法 使用default修飾方法
重寫
在繼承條件下,子類根據需求重寫父類的方法
重寫的要求:
- 重寫的方法名與父類的一致
- 參數類表相同
- 返回的參數類型相同或是其子類
- 權限修飾符不能縮小
修飾符問題
abstract 不能修飾屬性和構造方法, 不能同時與private static final修飾一個方法或類
final 修飾的類不能被繼承,修飾方法不能被重寫,修飾屬性是常量不能改變,不能修飾構造方法
static 修飾的方法不能重寫,但是能繼承,
private 凡是private修飾的屬性或方法能繼承
默認的權限修飾的屬性或方法 可以繼承 但必須在同一包的范圍內 可以修飾抽象類和接口 接口中不寫為public abstract
protected 不能修飾抽象類和接口,可以抽象類中的抽象方方法, 接口中的權限修飾符只能是public abstract
構造方法不能繼承,只能通過子類構造方法默認調用或使用super調用
多態
在繼承條件下,具有多種行為表現的集合特征
向上轉型
父類 object=new 子類(); 在繼承的條件將子類對象賦給父類對象,將父類的引用指向子類對象,
調用時:屬性調用的是父類的屬性,如果子類重寫了父類的的方法,調用的是子類的方法,否則調用的是父類的方法,不能調用子類新增的方法
向下轉型
向下轉型的前提是,父類已經向上轉型,否則會編譯錯誤,
父類 object=new 子類()
子類 subobj=object;
我目前還在學習,在學習期間努力每周寫一篇,以上部分為個人筆記和網絡搜索整理,由於學習任務多,加上個人語言組織能力不強,如果有錯誤請路過的大佬指出,也請見諒!!