如果标题不正确,请原谅我,我认为这个问题与“多态性”有关,但不想让标题复杂化。在另一个类的构造函数中传递一个类类型?
我正在学习Java并遵循“Java:Learn to Program”,随着我的进展,我正在应用这些知识并创建自己的场景以查看 如何应用“多态性”。如果有人能帮助我理解如何完成这项任务,我将不胜感激。我有三类:
- 摘要员工
- 经理(员工的子类)
- 餐厅
Employee类和管理类是非常直接的。我正在尝试创建一家餐厅,每家餐厅都有一名经理。我的问题是:
我应该将“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”声明了构造函数。我应该用施工而不是 向施工人员传递“管理员类型”来声明“施工人员”的实例吗?
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
想想这样,你的餐厅有经理或你的餐厅有名字,工资和经验吗? –
谢谢@keshlam。我倾向于我的第二个构造函数,并且我收集你的方法是第二个构造函数? – Combustion007
我建议根据您提供给我们的最小数据作为第一选项。将经理视为一个对象,而不是餐厅的属性。 – keshlam