什麼是繼承
在現實生活中,經常發生子承父業的事情,同樣的,在java中也有類似的“子承父業”的情況。也就是我們今天要說的繼承。如果說我們在Java項目中有兩個類的功能極其相似或者一個類的功能是在另一個類的基礎上實作的。那麼我們寫兩份比較相似代碼就極大的浪費了我們的時間和經曆。那麼我們能不能将相同的部分寫進一個項目中,于其相關的項目将這部分代碼通過一定的方式拿來使用呢?這完全是可以的,就是繼承。
繼承有哪些特點
上文中提到了“子承父業"但是我們沒有聽到過父承子業的吧,除此之外,我們一個人隻能有一個親生父親吧。同樣的,在java中繼承也有着同樣的特性:單繼承,單方向。也就是說一個類隻能有一個父類,隻能子類繼承父類的公共屬性和方法,父類不能獲得子類的屬性和方法。那父類隻能有一個子類嗎?答案是否定的。父類可以有多個子類(如果隻能有一個我們為啥不直接寫呢)。
如何實作繼承
繼承的關鍵字是 extend 也就是說在類名後接extend接父類類名。完成繼承後我們可以得到父類的公共方法和屬性(注意:私有的成員變量和方法是不能獲得的),代碼執行個體如下

通過上述代碼我們可以看到,cat類繼承了animal類的屬性(leg和tail),在測試中,我們直接調用cat類,成功獲得了animal的屬性并列印成功。
重寫
當我們繼承之後,發現父類的方法不能完全滿足或與我們想要的功能時,怎麼辦呢。這時我們就會要用到重寫功能。與其字面意思相同,重寫就是将父類中已有的方法進行重新書寫(更改或完全删掉重寫),具體代碼示例如下;
我們可以看到在第一個子類中,我們沒有改變其原有結構,在下面添加了會蕃茄炒蛋的列印語句,第二個子類中我們将super.skill(父類中方法)删掉,我們發現在調用對應的方法時,并沒有列印出父類中的方法,也就是說,這個super代表的父類的對象(父類也稱為超類),且删除後能夠運作。是以當我們要完全重寫父類方法時,可以将該句删除。
this、super、this(),super()分别代表什麼
到目前為止,我們已經接觸到了除this()外的所有關鍵字,那他們都是什麼意思呢?
this:表示目前類對象(成員變量與局部變量重名時,加在類名前可表示目前類對象)
super:表示父類對象,重寫時可以直接.方法代表父類方法。
super():表示父類構造方法。(為什麼沒有繼承關系的類建立構造方法時也會有super?因為所有類有一個共同的父類object)
this():表示目前類的構造方法。
重載和從寫的差別