Java如何从不同的类中获取值

时间:2017-06-22 17:10:31

标签: java class

我有这个代码示例

public class Plane {
private String id;
private Flight flight;
private int seats; 

public int getSeats() {
    return seats;
}

}

public class Flight {
private String id;
private Set<Passenger> passengers;
private Set<Employee> crew;  
private String destination;
private int flighTime; // minutes past Midnight
private int flightDuration; // in minutes
}

现在我正在尝试实施Flight的方法,Add1Passenger,所以我需要仰望飞机,如果有一个免费座位(座位数少于Flight的乘客数量)但我不知道如何做这样的事情。或者有更好的解决方案吗?

2 个答案:

答案 0 :(得分:1)

您应该将一个getter方法添加到您公开的Plane类中。

public class Plane {  
    private String id; 
    private Flight flight; 
    private int seats;

    public int getSeats(){
        return seats;
    }
} 

修改

您可以让Plane成为Flight的属性并通过构造函数传入。所以现在你有一架与飞行相关的飞机

public class Flight {
    private String id;
    private Set<Passenger> passengers;
    private Set<Employee> crew;  
    private String destination;
    private int flighTime; // minutes past Midnight
    private int flightDuration; // in minutes
    private Plane aircraft; // the aircraft assigned to the flight

    public Flight(Plane airplane){
        aircraft = airplane;
    }

    public Boolean addPassenger(Passenger passenger){
        if(aircraft.getSeats() > passengers.size()){
           passenges.add(passenger);
           return true;
        }
        return false;
    }
}

从理论上讲,你可以选择另一条在飞机上传递的路线作为addPassenger的参数,但是如果你将飞机传递给飞机,可以认为飞机的不同实例可以传递到飞行中,反之亦然。飞机物体,你可以在飞机上有不同的航班,如果这是合法的商业要求,这可能没问题,但如果航班有不同的目的地,那就没有意义了。

答案 1 :(得分:0)

在这里你是你也可以在你存储这两个类的同时制作第3课,你必须总是在构造函数中使用Inicialize新对象不要忘记

public class Plane {
private String id;
private Flight flight;
private int seats; 

Plane(Flight flight) {
   this.flight = flight;
}
public void addPasagerToFlight() {
    if (this.seats > flight.getPassagers()) {
        flight.addPasagerToFlight();
    }
    }
  }

public class Flight {
private String id;
private Set<Passenger> passengers;
private Set<Employee> crew;  
private String destination;
private int flighTime; // minutes past Midnight
private int flightDuration; // in minutes

// for example use LinkedList ArrayList HashSet ....
public void addPasagerToFlight(Passenger pas) {
    this.passengers.add(pas);
}

}