2014-02-22 25 views
0

大家好,此刻,我的toString()看起來是這樣的:在一個toString使用繼承/擴展的具體類名()

public String toString() 
    { 
     return ("A " + size + "cm " + weight + "kg Fish"); 
    } 

打印出這樣的事情:「一個16釐米0.2千克魚「

我在找它打印出類似這樣的內容:」一個16釐米的0.2千克的低音「,其中巴斯繼承了它的屬性,從NonEndangeredFish類,它的屬性從Fish類。至字符串當前位於Fish類。這是Fish類:

public abstract class Fish 
{ 
    // Any fish below this size must be thrown back into the lake 
    public static int THROW_BACK_SIZE = 18; 
    public static float WEIGHT_LIMIT = 10; 

    protected float weight; 
    protected int size; 


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


    public boolean isDesirableTo(Fisher f) 
    { 
     if(canKeep() && f.numFishCaught < f.LIMIT && this.weight + f.sumOfWeight < WEIGHT_LIMIT) 
     { 
      return true; 
     } 
     else 
     { 
     return false; 
     } 
    } 

    public abstract boolean canKeep(); 

    public int getSize() { return size; } 
    public float getWeight() { return weight; } 

    public String toString() 
    { 
     return ("A " + size + "cm " + weight + "kg"); 
    } 

這是超類。一個EndangeredFish類和一個NonEndangeredFish類擴展了Fish類(它們都是抽象的)。然後,Perch類和Bass類擴展了NonEndangeredFish類和AtlanticWhiteFish類,AuroraTrout類擴展了Endangered類。我的問題是如何在toString()中使用類名?我嘗試在Perch,AuroraTrout,AtlanticWhiteFish和Bass中聲明一個名稱並在toString中使用它的字符串,並且它不起作用,然後我嘗試在fish類中聲明一個名稱(一個String),然後使用三個參數構造一個構造函數但沒有工作,所以我真的卡住了。這是如何添加魚:

public class FishingTestProgram2 
{ 

    public static void main(String [] args) 
    { 
     // Create a big lake with 15 fish 
     Lake weirdLake = new Lake(15); 
     weirdLake.add(new AuroraTrout(76, 6.1f)); 
     weirdLake.add(new Perch(32, 0.4f)); 
     weirdLake.add(new Bass(20, 0.9f)); 
     weirdLake.add(new Perch(30, 0.4f)); 
     weirdLake.add(new AtlanticWhiteFish(140, 7.4f)); 
     weirdLake.add(new Bass(15, 0.3f)); 
     weirdLake.add(new Bass(90, 5.9f)); 
     weirdLake.add(new Bass(120, 6.8f)); 
     weirdLake.add(new AtlanticWhiteFish(80, 4.8f)); 
     weirdLake.add(new AuroraTrout(42, 3.2f)); 
     weirdLake.add(new Bass(100, 5.6f)); 
     weirdLake.add(new Bass(45, 2.0f)); 
     weirdLake.add(new Perch(16, 0.2f)); 
     weirdLake.add(new Bass(30, 1.2f)); 
     weirdLake.add(new Perch(7, 0.1f)); 

任何幫助表示讚賞謝謝!

回答

3

做這樣的:

public String toString() 
{ 
    return ("A " + size + "cm " + weight + " " + this.getClass().getSimpleName()); 
} 
+0

我會將getSimpleName()方法放在Endangered和NonEndangered子類中? – user3330114

+0

nope,在'魚'中,這是繼承的偉大之處(不是在這裏諷刺,我的意思是它) – Camilo

0

我懷疑,他們應該在每一個具體類覆蓋toString()(我說這是更好):

class Bass { 

    ... 
    public String toString() { 
     return super.toString() + " Bass"; 
    } 

    ... 

}