[英]Passing a Class type within a constructor of another class?
如果标题不正确,请原谅我,我认为这个问题与“多态性”有关,但不想使标题复杂化。
我正在学习Java,并遵循“ Java:学习编程”的知识,在学习过程中,我将运用这些知识并创建自己的场景,以了解如何应用“多态”。 如果有人可以帮助我了解如何完成此任务,我将不胜感激。 我有三节课:
员工类和经理类非常简单。 我正在尝试创建一家餐厅,每家餐厅都有一位经理。 我的问题是:
我应该将“ 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
这部分取决于品味以及您将要对这些物品做些什么。
如果您可能想独立地提及经理,那么他们希望成为他们自己的对象,而不是餐厅的属性。
由于餐厅本身不是经理,所以我建议它不应在其构造函数中使用经理的属性,而应该为其分配经理(在构造函数或setManager()调用中)。
除其他外,如果一位经理曾经负责两家餐厅,那将更加有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.