Java 重寫方法
子類可以繼承父類的對象方法
在繼承后,重復提供該方法,就叫做方法的重寫
又叫覆蓋 Override
步驟 1 : 父類Item
父類Item有一個方法,叫做effect
package property;
public class Item {
String name;
int price;
public void buy(){
System.out.println("購買");
}
public void effect() {
System.out.println("物品使用后,可以有效果");
}
}
步驟 2 : 子類LifePotion
子類LifePotion繼承Item,同時也提供了方法effect
package property;
public class LifePotion extends Item{
public void effect(){
System.out.println("血瓶使用后,可以回血");
}
}
步驟 3 : 調用重寫的方法
調用重寫的方法
調用就會執行重寫的方法,而不是從父類的方法
所以LifePotion的effect會打印:
"血瓶使用后,可以回血"
package property;
public class Item {
String name;
int price;
public void effect(){
System.out.println("物品使用后,可以有效果");
}
public static void main(String[] args) {
Item i = new Item();
i.effect();
LifePotion lp =new LifePotion();
lp.effect();
}
}
步驟 4 : 如果沒有重寫這樣的機制怎么樣?
如果沒有重寫這樣的機制,也就是說LifePotion這個類,一旦繼承了Item,所有方法都不能修改了。
但是LifePotion又希望提供一點不同的功能,為了達到這個目的,只能放棄繼承Item,重新編寫所有的屬性和方法,然后在編寫effect的時候,做一點小改動.
這樣就增加了開發時間和維護成本
package property;
public class Item {
String name;
int price;
public void buy(){
System.out.println("購買");
}
public void effect() {
System.out.println("物品使用后,可以有效果");
}
}
package property;
public class LifePotion {
String name;
int price;
public void buy(){
System.out.println("購買");
}
public void effect(){
System.out.println("血瓶使用后,可以回血");
}
}
練習: 重寫
(設計一個類MagicPotion 藍瓶,繼承Item, 重寫effect方法
並輸出 “藍瓶使用后,可以回魔法”)
答案:
package property;
public class MagicPotion extends Item{
public void effect(){
System.out.println("藍瓶使用后,可以回魔法");
}
}