1、類和類的關係:繼承 extends / 單繼承 / 單根繼承
-- 繼承的意義:爲了提高代碼的複用性,減少了代碼的編寫提高開發效率。
-- 方法重寫的意義:在不修改父類源碼的前提下,在子類中重寫業務,從此使用的就是重寫後的功能。
-- 要求子類的方法聲明和父類一樣,只要改方法體。
-- 有了繼承有了重寫就產生了多態,多態的意義:爲了統一程序的調用標準,標準就是父類。
-- 多態 也就是向上轉型/向上造型。
-- 向下造型的意義:很少用,相當於想要使用子類的特殊功能,還不如直接創建子類對象簡單。
-- class A extends B
-- 其中,A和B都是類,A是子類,B是父類,A就擁有了B的所有功能(除了私有的和構造方法)
-- 其他知識點:this 和super ,構造方法,各種代碼塊...
2、類和接口關係:實現implements / 單實現 / 多實現
-- class A implements B,C
-- 其中,A是實現類,B和C是接口
-- 要求A 可以把 B 和C 接口裏的所有 抽象方法 都重寫掉,否則 A 就是抽象類
-- 接口不能創建對象
-- 接口裏沒有構造方法,接口裏都是常量,接口裏都是抽象方法
3、接口和接口關係:繼承extends / 單繼承 / 多繼承
-- 接口的多繼承的關係,打破了java單繼承的侷限性
-- interface A extends B,C
-- 其中,A B C 都是接口,A是子接口,同時擁有B和C接口裏的所有功能
-- class AImpl implements A
-- 要求AImpl需要重寫A接口裏的所有方法(是包含B和C接口的所有方法),否則就是抽象類
4、接口和抽象類的區別!!!
-- 相同點:都是抽象層,都不能實例化
-- 不同點:
-- 1、抽象類用abstract關鍵字描述,接口用interface
-- 2、子類和抽象類之間是extends關係,實現類和接口之間是implements關係
-- 3、抽象類中 可以 有構造方法 ,接口裏 不能 出現 構造方法
-- 4、抽象類裏可以有 變量,接口裏沒有變量全都是靜態的常量
-- 5、接口裏定義常量的語法:public static final String NAME="jack",會爲變量自動拼接public static final
-- 6、抽象類裏 可以有普通方法 也可以有 抽象方法,接口都是抽象方法
-- 7、抽象類和子類之間是繼承關係,而且java中,只支持單繼承
-- 8、接口突破了java單繼承的侷限性,因爲接口可以多繼承也可以多實現,甚至可以繼承的同時多實現
-- 9、接口的複雜用法
-- 多繼承: interface A extends B,C 其中A是子接口,同時擁有自己的和BC的功能
-- 多實現: class AImpl implements M,N,O,P 其中AImpl是實現類,需要同時重寫MNOP的所有抽象方法,否則就是一個抽象類
-- 繼承的同時多實現: class AImpl extends Object implements M,N 一定是先繼承後實現