0

抱歉,如果这有点令人困惑,第一次使用这个网站,所以我不知道我输入的代码是否正确。所以我的问题是,当我在类驱动程序中运行这个程序时,我得到了这个:

name: No Name Yet
Manufacturer: no name yet
Engine Cyclinders: 0
Load: 0.0
Towing: 0.0

这是默认设置,现在我试图能够在类驱动程序中输入一个输入,例如将名称更改为我从类Person中设置的任何名称。我试过这样做p.setName("Tim"),但它只会显示名称,就好像我从 classtim调用方法一样。如果我打电话给卡车,那么它说还没有名字。我把 super 放进去,但我不确定我做错了什么。任何帮助,将不胜感激 writeouputPersonwriteoutputwriteoutput

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();
    }

}

4

1 回答 1

0

您不需要在层次结构中创建每个类的实例。

尝试:

Truck t = new Truck();
t.setName("tim");
t.writeOutput();

此外,您的设计很奇怪:Vehicles 通常不会继承 Person,Driver 通常不会继承 Truck。Driver 是 Person 的子类。卡车将是车辆的子类,而车辆将“拥有”驾驶员。

于 2013-04-23T00:33:11.350 回答