如何在java中的新类中创建特定类型的属性?

时间:2017-05-06 14:05:01

标签: java class types attributes

我是一个Java新手,我的任务是创建一个带司机,乘客,座位等的出租车项目...

我被困在这一点上: 创建一个名为Taxi的类,代表一辆出租车。因为每辆出租车都有一个驱动程序,所以每个Taxi对象都应该有一个驱动程序属性(类型为Human)。此外,出租车的乘客也可以由人物对象代表。

我已经存在的代码:

public class Main {

public static void main(String[] args){

    Human human1 = new Human("Max", "Mustermann");

    // System.out.println(human1.getForename() + " " + human1.getName());
    System.out.println("This is " + human1 + ".");

    Taxi taxi1 = new Taxi();

    Human driver1 = new
}

}

public class Human {

private String name;
public String forename;

public Human(String forename, String name){
    this.name = name;
    this.forename = forename;
}

public String getName(){
    return name;
}

public String getForename(){
    return forename;
}

public String toString(){
    return this.forename + " " + this.name;
}
}




public class Taxi {


}

如何在班级出租车中创建人类型的驾驶员和乘客?

谢谢。

2 个答案:

答案 0 :(得分:0)

尝试类似:

public class Taxi {
    private Human driver;//Taxi has a driver
    public Taxi(Human driver) {
        this.driver = driver;
    }
}
// in main
Taxi taxi = new Taxi(human1);//pass that driver in constructor

答案 1 :(得分:0)

我认为您应该避免在课程中混合HumanTaxi概念。
Human实在太宽泛了。这适用于生物学或哲学模型领域,不适用于出租车模型领域 你有一些司机?创建一个Driver类 你有一些乘客?创建一个人或乘客类。

分离概念可以解决域名问题。

然后在Taxi中提供满足您要求的方法:

  • 有司机
  • 添加/移除乘客

例如:

public class Taxi {
    private Driver driver;
    private List<Passenger> passengers = new ArrayList<>();

    public Taxi(Driver driver) {
        this.driver = driver;
    }

    public addPassenger(Passenger passenger){
        this.passengers.add(passenger);
    }

    public removePassenger(Passenger passenger){
        this.passengers.remove(passenger);
    }
}

此处Taxi实例只能由Driver实例“驱动”,并且可能只“接受”Passenger个实例。
如果你只有Human课程,你就会被困,因为任何人都可以开出租车。

如果司机也可能是乘客,您可以用人员类替换乘客舱。