對不起,如果這是有點令人困惑,第一次使用本網站,所以我不知道我是否正確輸入我的代碼。所以我的問題是,當我運行這個程序的類驅動程序我得到這個:如何添加輸入到繼承
name: No Name Yet
Manufacturer: no name yet
Engine Cyclinders: 0
Load: 0.0
Towing: 0.0
這是默認的,現在我想可以把輸入的類驅動程序,這將改變說這個名字例如,我將其設置爲Person
。我嘗試過使用p.setName("Tim")
,但如果我撥打Person
的writeouput
方法,它只會顯示名稱tim
。如果我打電話給班級卡車writeoutput
,那麼它說沒有名字。我把writeoutput
放在超級,但我不知道我做錯了什麼。任何幫助,將不勝感激
public class Person {
private String name;
public Person()
{
name = "No Name Yet";
}
public Person(String initialName)
{
name = initialName;
}
public void setName(String newName)
{
newName = "tim";
name = newName;
}
public String getName()
{
return name;
}
public void writeOutput()
{
System.out.println("name: " + name);
}
public boolean hasSameName(Person otherPerson)
{
return this.name.equalsIgnoreCase(otherPerson.name);
}
}
public class Vehicle extends Person {
String manufactName;
int engine;
public Vehicle()
{
manufactName = "no name yet";
engine = 0;
}
public Vehicle(String initialManufactName, int initialEngine)
{
manufactName = initialManufactName;
engine = initialEngine;
}
public void setManufactName(String newManufactName)
{
manufactName = newManufactName;
}
public void setEngine(int newEngine)
{
engine = newEngine;
}
public String getManufactName()
{
return manufactName;
}
public double getEngine()
{
return engine;
}
public void writeOutput()
{
super.writeOutput();
System.out.println("Manufacturer: " + manufactName);
System.out.println("Engine Cyclinders: " + engine);
}
public boolean hasSameManufactName(Vehicle otherVehicle)
{
return this.manufactName.equalsIgnoreCase(otherVehicle.manufactName);
}
public boolean hasSameEngine(Vehicle otherVehicle)
{
return this.engine == (otherVehicle.engine);
}
}
public class Truck extends Vehicle {
private double load;
private double towing;
public Truck()
{
load = 0;
towing = 0;
}
public Truck(double initialLoad, double initialTowing)
{
load = initialLoad;
towing = initialTowing;
}
public void setLoad(double newLoad)
{
load = newLoad;
}
public void setTowing(double newTowing)
{
towing = newTowing;
}
public double getLoad()
{
return load;
}
public double getTowing()
{
return towing;
}
public void writeOutput()
{
super.writeOutput();
System.out.println("Load: " + load);
System.out.println("Towing: " + towing);
}
public boolean hasSameLoad(Truck otherTruck)
{
return this.load == (otherTruck.load);
}
public boolean hasSameTowing(Truck otherTruck)
{
return this.towing == (otherTruck.towing);
}
}
public class Driver extends Truck{
public static void main(String[] args){
Person p = new Person();
Vehicle v = new Vehicle();
Truck t = new Truck();
t.writeOutput();
}
}
我會擔心這個聲明'newName =「tim」;'在你的'Person's'setName'方法中 – MadProgrammer 2013-04-23 00:28:59
哎呀,我忘了拿出來之前我發佈它。 newName =「tim」;不在代碼中了。我只是嘗試不同的事情,看看我能上班 – Snobbysteven 2013-04-23 00:31:38
發佈代碼時,如果您可以縮小到相關部分,它會有所幫助。它使您的問題更具可讀性,並可讓您更快速地做出迴應。 – 2013-04-23 00:40:46