一、類的繼承了解
在java中類的繼承是指:在一個現有類的基礎之上去建構一個新的類,建構出來的新的類被稱為子類,現有類是父類,子類會自動擁有父類所有可繼承的屬性和方法。繼承類是現有類的更具體一些,繼承類可能隻擁有一部分父類的屬性和方法。
如圖,這就表示了繼承類是父類的一種更具體形式。
二、繼承類的使用
1、需要關鍵字extends如圖繼承了Employee類
一旦繼承,父類的所有可繼承的變量和方法子類都自動繼承。也就是說你可以用子類的對象調用父類的成員,還有子類的成員和方法。也就是說子類可以調用自己的東西,也可以調用父類的東西。
三、繼承的好處
1、繼承的出現提高了代碼的複用性,t提高了軟體開發效率。比如:父類有的變量不用寫了。
2、繼承的出現讓類與類之間産生了關系,提供了多态的前提,比如:類與類之間有了繼承關系。
那麼繼承跟多态有什麼關系?
多态:是一個事物擁有不同的形态,在java中就是一個類有不同的具體類。比如:公司裡的所有員工統稱為員工,員工又分為開發員工,研發員工,維護員工。分出的這些不同功能的員工就是多态。
四、繼承的注意事項
1、java中隻允許單繼承,即:一個類隻能有一個父類。因為多繼承有安全問題如圖:
會造成c對象調用的方法,分不清調用誰的方法。
2、允許多個類繼承一個類。
3、允許多次繼承。比如:A繼承B,B繼承C。如圖:
上面是多層繼承。層次越多,擁有的功能也就越多。聯系多繼承,那麼c對象調用方法時,調用的是B的方法。如下圖:
此時C.調用的就是B類的方法,可以用就近原則來解釋。
4、java中的父類和子類是一個相對的概念。因為一個類可以是一個類的父類,也可以是另一個類的子類。
五、繼承體系和抽象
我認為繼承形成了抽象關系。所謂的父類就是內建了各個具體類的共性東西。最高的父類,就是最共性的東西。子類不但具有共性的東西,還具有自己的特性東西。子類的共性抽取,形成父類。最後抽取出來的說不清的類,就成了抽象類。抽象類即:有這個功能,但是他不是一個對象,無法形成對象。比如,人,貓,魚抽象成動物,動物是個物體嗎?動物不是物,是個名詞,不是個實體,無法作為對象。故就是一個抽象類。
六、繼承後子類和父類的成員變量的變化。
1、子類的對象,調用成員變量,子類自己有,使用自己的,子類沒有,調用父類的。其實還是就近原則。
七、super關鍵字的使用。
1、super關鍵字的需要。
如果有一個父類,一個子類。父類和子類都對屬性int age 賦了值,當main方法調用了子類對象,并要列印子類age時,系統會根據就近原則列印出子類賦給age的值。但是問題來了,如果要列印父類賦給age的值時如何處理?
super關鍵字:用來表示目前對象中包含父類對象空間的引用。 也就是說super代表的是目前類的父類的對象。
2、注意:
子類又叫派生類,父類又叫基類或者超類。
this.是調用本類成員。
super.是調用自己父類成員。
八、重寫和重載問題
1、重載:(overload)。重載是一個類當中方法名相同,但是方法參數不同。
2、重寫(覆寫):(override)重寫是父類和子類當中出現了一樣的方法名時方法名,修飾符,參數清單都相同(方法主體不同)被稱為子類重寫父類的方法。
前者是同一個類的事情,後者是子父類的事情。方法的重寫具有非常重要的擴充功能。
九、java方法中的重寫問題注意事項:
1、子類重寫父類方法,必須保證子類方法的權限大于或等于父類方法權限。
四大權限:public(公有)>protected(受保護)> default(預設權限)> private(私有的)
2、方法的名,傳回類型,參數清單都要一模一樣