步驟 1 :什麼是預設方法
預設方法是jdk8新特性,指的是介面也可以提供具體方法了,而不像以前,只能提供抽象方法
mortal 這個介面,增加了乙個預設方法revive,這個方法有實現體,並且被宣告為了default
package charactor;
public inte***ce mortal
}
步驟 2 :為什麼會有預設方法
假設沒有預設方法這種機制,那麼如果要為mortal增加乙個新的方法revive,那麼所有實現了mortal介面的類,都需要做改動。
但是引入了預設方法後,原來的類,不需要做任何改動,並且還能得到這個預設方法
通過這種手段,就能夠很好的擴充套件新的類,並且做到不影響原來的類
練習: 預設方法
為ad介面增加乙個預設方法 attack()
為ap介面也增加乙個預設方法 attack()
問: adaphero同時實現了ad,ap介面,那麼 adaphero 物件呼叫attack()的時候,是呼叫哪個介面的attack()?
答案:
package charactor;
public class adaphero extends hero implements ad,ap,mortal
@override
public void physicattack()
@override
public void die()
//作為同時繼承了ad和ap中的 預設方法attack,就必須在實現類中重寫該方法
//從而免去到底呼叫哪個介面的attack方法這個問題
@override
public void attack()
}
Java自學 介面與繼承 隱藏
與重寫類似,方法的重寫是子類覆蓋父類的物件方法 隱藏,就是子類覆蓋父類的類方法 步驟 1 父類 父類有乙個類方法 battlewin package charactor public class hero 步驟 2 子類隱藏父類的類方法 package charactor public class ...
Java自學 介面與繼承 重寫
子類可以繼承父類的物件方法 在繼承後,重複提供該方法,就叫做方法的重寫 又叫覆蓋 override 步驟 1 父類item 父類item有乙個方法,叫做effect package property public class item public void effect 步驟 2 子類lifepo...
Java自學 介面與繼承 內部類
內部類分為四種 非靜態內部類 靜態內部類 匿名類本地類 步驟 1 非靜態內部類 非靜態內部類 battlescore 戰鬥成績 非靜態內部類可以直接在乙個類裡面定義 比如 戰鬥成績只有在乙個英雄物件存在的時候才有意義 所以例項化battlescore 的時候,必須建立在乙個存在的英雄的基礎上 語法 ...