2017-06-07 89 views
1

我有一個叫做Player的超類,我有3個子類,分別是Young Hustler,StudentThe Herbalist如何在超類方法中使用子類參數?

在每個小類中,我都有私人蔘數money,stashSizeconnections

我想創建一個名爲sellWeed()Player類從stashSize除去1,並增加了10 money的方法,使主要方法打電話時他們,我可以適用該法的所有子類。但是,我如何從子類中獲取私有參數到超類中?

我不能在超類中聲明它們,因爲每個子類都有它自己的默認啓動參數,這些參數在遊戲過程中應該會進行。

+0

編輯問題並在這裏編寫這些類的代碼。 –

+0

將參數移動到子類並在初始化期間設置默認值。 – nCessity

回答

1

像這樣的東西應該工作:

class Player { 
    protected int money; 
    protected int stashSize; 
    // and the connections parameter too... 
    public Player(int money, int stashSize) { 
    this.money = money; 
    this.stashSize = stashSize; 
    } 
    public void sellWeed() { 
    // work with money and stashSize here 
    } 
} 

class Student extends Player { 
    public Student() { 
    super(0, 10); // no money and stashSize 10 for student 
    } 
} 

的想法是私有參數移至超類。然後,您可以通過將值傳遞給超級構造函數(super())來初始化它們。

相關問題