如果标题不正确,请原谅我,我认为这个问题与“多态”有关,但不想让标题复杂化。
我正在学习Java并遵循“Java:学习编程”,随着我的进展,我正在应用这些知识并创建自己的方案来查看 如何应用“多态”。如果有人能帮我理解如何完成这项任务,我将不胜感激。我有三个班级:
Employee类和Manager类非常简单。我正在努力创建一家餐厅,每家餐厅都有一位经理。我的问题是:
我应该将“Manager”类型作为“Restaurant”类的构造函数参数传递,还是在构造函数中实例化“Manager”对象?
public abstract class Employee{
private String _empName;
private double _empSalary;
public Employee( string name, double salary){
_empName = name;
_empSalary = salary;
}
public void setEmpName( String name ){
_empName = name;
}
public String getEmpName(){
return _empName;
}
public void setEmpSalary( double salary ){
_empSalary = salary;
}
public double getEmpSalary(){
return _empSalary;
}
}//CLASS
public class Manager{
private double _yrsOfExp;
public Manager( String name, double salary, double experience ){
super(name, salary);
_yrsOfExp = experience;
}
public void setManagerExperience( double years ){
_yrsOfExp = years;
}
public double getManagerExperience(){
return _yrsOfExp;
}
}//CLASS
这是我需要帮助的地方,我用“MANAGER TYPE”声明构造函数。我是否应该用结构声明“Manager”的实例而不是 请使用构造函数传递“Manager type”吗?
public class Restaurant{
private Manager _manager;
private String _location;
//CONSTRUCTOR 1
//SHOULD I PURSUE IT THIS WAY OR
public Restaurant( Manager manager, String location){
_manager = manager;
_location = location;
}
//CONSTRUCTOR 2
//SHOULD I DO IT THIS WAY?
public Restaurant( String name, double salary, double experience, String location){
super(name, salary, experience);
_location = location;
}
public String toString(){
String str = "";
return str;
}
}//CLASS
答案 0 :(得分:1)
这在一定程度上取决于品味以及你将如何对待这些物品。
如果您可能想要独立地参考经理,那么他们希望成为他们自己的对象而不是餐厅的属性。
由于餐厅本身不是经理,我建议它不应该在其构造函数中使用经理的属性,而应该将经理分配给它(在构造函数中或在一个setManager()调用)。
除此之外,如果一位经理负责两家餐馆,那将更有意义。