2014-02-21 150 views
2

以下是解釋我的情況的基本框架代碼。如何在抽象超類中使用子類中的方法

這是超級抽象類:

public abstract class Person 
{ 
    public void buyFood(String foodName, int payment) 
    { 
     System.out.println("Buy " + foodName + " and pay $" + payment + "."); 
     pay(payment); 
    } 
} 

這是一個子類的超抽象類:(注意,我刪除了其他功能,如構造函數和方法,使後短

public class Visitor extends Person 
{   
    public void pay(int amount) 
    { 
     money_v -= amount; 
     System.out.println(this.to_s() + " has got HK$" + money_v + "left."); 
    } 

} 

我想在抽象類中使用這個public void pay(int amount)方法;但是,超級抽象類Person不會接受付款(付款),因爲該方法不在範圍內。 ?

感謝〜

回答

1

@LarsChung:碼被附加如下:

public abstract class Person 
{ 
    public void buyFood(String foodName, int payment) 
    { 
     System.out.println("Buy " + foodName + " and pay $" + payment + "."); 
     pay(payment); 
    } 

    public abstract void pay(int amt); 
} 

public class Visitor extends Person 
{  

    @Override 
    public void pay(int amount) 
    { 
     money_v -= amount; 
     System.out.println(this.to_s() + " has got HK$" + money_v + "left."); 
    } 

} 
3

創建付費作爲超級類一個抽象方法,從而使子類,那麼重寫/實現它:

abstract public void pay(int amount); 
+3

此外,我會建議他閱讀關於模板方法模式(http://en.wikipedia.org/wiki/Template_method_pattern)如何在抽象類中強制執行基本行爲並確定應該由子類。 – Smutje

相關問題