2014-02-13 58 views
1

我有超類,看起來像:我可以在我的超類中使用子類的名稱嗎?

public abstract class Fish { 

protected int size; 

protected float weight; 

//constructor 

public Fish(int s, float w) { 
size = aSize;weight = aWeight;} 

,我有2子類此超。第一招:

public class SomeFish extends Fish{ 

//constructor 

public SomeFish(int s, float w) { 

super(s, w) } 

第二個:

public class AnotherFish extends Fish{ 

//constructor 

public AnotherFish(int s, float w) { 

super(s, w) } 

我所要做的就是寫在魚類一個String toString方法,這將返回類似:一張12 cm的0.5 這裏應該是適當類型的魚(AnotherFish或SomeFish)。我可以做到這一點,而不是使字符串toString方法抽象,並在SomeFish和AnotherFish類中實現字符串toString方法?

+0

不明確的問題 –

+0

toString存在於Object類中,因此您不需要將其設置爲抽象。只需在任何需要的類上覆蓋它。 – slipperyseal

+0

@KugathasanAbimaran我需要返回帶有魚類名稱的字符串,如果是AnotherFish或SomeFish。 – user2926550

回答

5

參考類this實例,這將是實際類(可能是一個子類):

public abstract class Fish { 

    // rest of class omitted 

    @Override 
    public String toString() { 
     return "A " + size + "cm, " + weight + "kg " + getClass().getSimpleName(); 
    } 
} 

呼叫getClass().getSimpleName()將返回字符串"AnotherFish"

無需在子類中定義任何東西來完成這項工作。

+0

,我需要什麼,我希望我已經看到它在時間)謝謝! – user2926550

+0

看到它的時間?你的問題發生10分鐘後,這個答案已經發布。這不夠快? – Bohemian

+0

對不起,我不是那個意思..這是我的錯,我沒有看到它 – user2926550

相關問題