Java自學-接口與繼承 重寫


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("藍瓶使用后,可以回魔法");
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM