2015-10-27 63 views
2

我有一個抽象類,割草機,覆蓋toString()方法。草坪拖拉機類擴展割草機。它覆蓋了toString()方法並將super.toString()作爲方法的第一行。然後我有一個商業類擴展LawnTractor並覆蓋toString(),並在其第一行中調用super.toString()。 實例化一個Commercial對象(聲明爲Mower對象)並調用它的toString()我希望它打印來自割草機和草坪拖拉機的兩個屬性,然後它是自己的屬性。相反,它只打印來自割草機的屬性,然後它自己的屬性。我如何調用或重寫商業中的toString()方法,以便它調用其父(LawnTractor)toString()而不僅僅是超級類(割草機)。如何從父類調用重寫的方法而不是超類?

public abstract class Mower { 
    private String manufacturer; 
    private int year; 
    private String serialNumber; 

    public String tostring(){ 
     String temp = "Manufacturer: " + getManufacturer() + "\nYear: " + getYear() + "\nSerial Number:" + getSerialNumber() + "\n"; 
     return temp; 
    } 
} 
public class LawnTractor extends Mower{ 
    private Engine engine = new Engine(); 
    private String model; 
    private double deckWidth; 

    public LawnTractor(){ 
     super(); 
    } 

    public String toString(){ 
     String temp = super.tostring() + "Engine:\n" + getEngine().toString() + "\nModel: " + getModel() + "\nDeck Width: " + getDeckWidth() + "\n"; 
     return temp; 
} 
public class CommercialMower extends LawnTractor { 
    private double operatingHours; 
    private boolean zeroTurnRadius; 

    public CommercialMower(){ 
     super(); 
    } 
    public String toString(){ 
     String temp = super.toString() + "Operating Hours: " + getOperatingHours() + "\nZero Turn Radius: " + isZeroTurnRadius() + "\n"; 
     return temp; 
} 
+2

請在您的描述之外添加代碼片段 – Hristo

+0

所以我發現在NetBeans中,我需要通過在方法菜單打開時查看它的javaDoc來指定要調用哪個super.toString()。但是當我將我的代碼交給我的教授時,這種選擇是否會轉移?有沒有辦法保證我的決定? – Jordyn

+1

請告訴我們您的代碼。 –

回答

2

因此,它聽起來就像你正在試圖做的是創造toStrings的層次,當你有對象的圖形打印。所以你所需要做的就是在超級鏈接被調用的時候追加超鏈接。 (如果我正確理解你)

這裏的割草機類

public class Mower { 
    @Override 
    public String toString() { 
     return "Mower toString\n"; 
    } 
} 

LawnTractor

public class LawnTractor extends Mower { 
    @Override 
    public String toString() { 
     String superString = super.toString(); 
     return superString + "LawnTractor toString\n"; 
    } 
} 

商業

public class Commercial extends LawnTractor { 
    @Override 
    public String toString() { 
     String superString = super.toString(); 
     return superString + "Commercial toString\n"; 
    } 
} 

主要類來運行它。請參閱下面的輸出。這是你在這個地方去嗎?

public class Main { 
    public static void main(String[] args) { 
     Mower mow = new Commercial(); 
     System.out.println(mow.toString()); 

    } 
} 

這是您的輸出。我相信這就是你要找的。如果不是請澄清

Mower toString 
LawnTractor toString 
Commercial toString 

的你要如何的對象在返回字符串可以取決於你如何追加他們一起重新排序顯示的順序。割草機可以是第一個或最後一個。

0

我意識到自己的錯誤。我的割草機類有tostring()方法,但不覆蓋toString()方法(語法不同)。

相關問題