子類可以繼承父類的物件方法
在繼承後,重複提供該方法,就叫做方法的重寫
又叫覆蓋 override
步驟 1 :父類item
父類item有乙個方法,叫做effect
package property;
public class item
public void effect()
}
步驟 2 :子類lifepotion
子類lifepotion繼承item,同時也提供了方法effect
package property;
public class lifepotion extends item
}
步驟 3 :呼叫重寫的方法
呼叫重寫的方法
呼叫就會執行重寫的方法,而不是從父類的方法
所以lifepotion的effect會列印:
「血瓶使用後,可以回血」
package property;
public class item
public static void main(string args)
}
步驟 4 :如果沒有重寫這樣的機制怎麼樣?
如果沒有重寫這樣的機制,也就是說lifepotion這個類,一旦繼承了item,所有方法都不能修改了。
但是lifepotion又希望提供一點不同的功能,為了達到這個目的,只能放棄繼承item,重新編寫所有的屬性和方法,然後在編寫effect的時候,做一點小改動.
這樣就增加了開發時間和維護成本
package property;
public class item
public void effect() }
package property;
public class lifepotion
public void effect()
}
練習: 重寫
(設計乙個類magicpotion 藍瓶,繼承item, 重寫effect方法
並輸出 「藍瓶使用後,可以回魔法」)
答案:
package property;
public class magicpotion extends item
}
Java自學 介面與繼承 隱藏
與重寫類似,方法的重寫是子類覆蓋父類的物件方法 隱藏,就是子類覆蓋父類的類方法 步驟 1 父類 父類有乙個類方法 battlewin package charactor public class hero 步驟 2 子類隱藏父類的類方法 package charactor public class ...
Java自學 介面與繼承 內部類
內部類分為四種 非靜態內部類 靜態內部類 匿名類本地類 步驟 1 非靜態內部類 非靜態內部類 battlescore 戰鬥成績 非靜態內部類可以直接在乙個類裡面定義 比如 戰鬥成績只有在乙個英雄物件存在的時候才有意義 所以例項化battlescore 的時候,必須建立在乙個存在的英雄的基礎上 語法 ...
Java自學 介面與繼承 預設方法
步驟 1 什麼是預設方法 預設方法是jdk8新特性,指的是介面也可以提供具體方法了,而不像以前,只能提供抽象方法 mortal 這個介面,增加了乙個預設方法revive,這個方法有實現體,並且被宣告為了default package charactor public inte ce mortal 步...