對封裝繼承多態的理解
封裝
- 即把對象的屬性和方法包裹起來, 只能通過約定好的接口實現訪問
- 封裝是一種信息隱藏技術,在java中通過關鍵字private實現封裝。
封裝的作用:
① 對象的數據封裝特性徹底消除了傳統結構方法中數據與操作分離所帶來的種種問題,提高了程序的可復用性和可維護性,降低了程序員保持數據與操作內容的負擔。
②對象的數據封裝特性還可以把對象的私有數據和公共數據分離開,保護了私有數據,減少了可能的模塊間干擾,達到降低程序復雜性、提高可控性的目的。
繼承
繼承是面向對象的最顯著的一個特征。繼承是從已有的類中派生出新的類,新的類能吸收已有類的數據屬性和行為,並能擴展新的能力。
為什么要繼承呢:
1、反映現實的真實關系
2、減少代碼冗余
3、對父類的屬性和方法進行擴展和重寫
繼承中,子類不可以選擇性的繼承父類的東西,而是全部繼承父類的屬性和方法。其中父類又叫超類或基類,子類又叫派生類。父類是子類的一般化,子類是父類的特化(具體化)。java中不支持多繼承,一個類最多只能有一個父類。而在java中多繼承是通過接口實現的。
抽象類和接口的區別
抽象了和接口都不能直接實例化,子類繼承/實現,抽象類/接口必須實現所有方法,否則子類只能是一個抽象類或接口
接口中的方法定義默認為public abstract類型,接口中的成員變量類型默認為public static final。
- 抽象類中可以有構造方法,接口中不能
- 抽象類可以有普通成員變量(public,protected,private),接口只能有靜態變量默認為public static final
- 抽象類可以有普通方法,接口所有方法必須是抽象的
- 抽象類中可以有靜態方法,並且能調用,接口不能有靜態變量(
JDK1.8后接口也可以有可調用的靜態變量
) - 類只能單繼承,接口可以多繼承
多態
多態主要是基於繼承和重寫,最終可以實現相同的類型調用相同的方法,結果不相同
例如:有一個動物類,里面有一個方法輸出,動物吃食物
小貓繼承動物類后,重寫這個方法輸出,小貓吃魚干
小狗繼承動物類后,輸出小狗吃骨頭