2010-12-05 75 views
1

我有這個子類AggressiveAlien,這裏是一個方法裏面如何使用父類從子類獲取參數?

public boolean attack() 
{ 
    boolean attack; 
    if (currentLocation == this.AggresiveAlien.getCurrentLocation) 
    { 
     energyCanister = (int) ((1/2) * alien2.energyCanister + energyCanister); 
     lifePoints = (int) (lifePoints - (1/2)*alien2.energyCanister); 
     attack = true; 
    } 
    return attack; 
} 

我想返回值在父類外國人

public void gotAttacked() 
{ 
    if (AggresiveAlien.attack()) 
     energyCanister = energyCanister/2; 
} 

被使用,但它似乎是給錯誤在AggresiveAlien.attack()部分。有沒有什麼辦法讓我使用AggresiveAlien的這個返回值來在外星人中使用?

幫助將非常感激。謝謝!

這裏是子類的另一部分

公共類AggressiveAlien延伸異己 { 公共AggressiveAlien(XYCoordination currentLocation,INT energyCanister) { 超級(currentLocation,energyCanister); }

public int collectCanister(NormalPlanet canister) 
{ 
    super.collectCanister(); 
    n=1; 
} 
+0

你在AggresiveAlien.attack()部分得到了什麼錯誤? – khachik 2010-12-05 10:06:48

回答

0

看起來好像你試圖用靜態AggresiveAlien。相反,你可能想這樣做:


if ((AggresiveAlien)this.attack()) energyCanister = energyCanister/2; 

但我不能確定給定的信息量有限。

0

你說,你有一個父母和孩子班,這意味着你在這裏使用inheritance。你可以通過使用虛函數然後重寫子類來輕鬆完成你的任務。

在您的Alien類中創建一個名爲attack()的函數並覆蓋子類AggresiveAlien

類似以下內容:

階級異己:

public boolean attack() 
{ 
    return false; 
} 

AggresiveAlien類:

public boolean attack() 
{ 
    return true; 
} 

和你gotAttacked功能

public void gotAttacked() 
{ 
    if (this.attack()) 
     energyCanister = energyCanister/2; 
} 
1

我想你可能有兩個問題。首先,你需要的基本類型強制轉換爲子類型,如

((AggressiveAlien)this).attack() 

此外,1/2實際上可能是0! 1和2被解釋爲整數,這意味着任何部門的價值都被淹沒了!所以1/2 =(int)0.5 = 0

檢查您的類型!您最好使用0.5或使用/2.0來強制將值計算爲float或double(取決於平臺)。

希望這有助於!

相關問題