我是一个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 {
}
如何在班级出租车中创建人类型的驾驶员和乘客?
谢谢。
答案 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)
我认为您应该避免在课程中混合Human
和Taxi
概念。
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
课程,你就会被困,因为任何人都可以开出租车。
如果司机也可能是乘客,您可以用人员类替换乘客舱。