gpt4 book ai didi

java - 在另一个类的构造函数中传递类类型?

转载 作者:行者123 更新时间:2023-12-01 13:17:15 25 4
gpt4 key购买 nike

如果标题不正确,请原谅我,我认为这个问题与“多态性”有关,但不想使标题复杂化。

我正在学习 Java 并遵循“Java:学习编程”,随着我的学习,我正在应用知识并创建自己的场景来查看如何应用“多态性”。如果有人能帮助我了解如何完成这项任务,我将不胜感激。我有三门课:

  1. 抽象员工
  2. 经理(员工的子类)
  3. 餐厅

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”的实例而不是请通过构造函数传递“管理器类型”?

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

最佳答案

这在一定程度上取决于品味以及您要对这些对象执行的其他操作。

如果您可能想独立地引用经理,那么他们希望成为自己的对象而不是餐厅的属性。

由于 Restaurant 本身不是 Manager,因此我建议它不应在其构造函数中采用 Manager 的属性,而应该为其分配一个 Manager(在构造函数中或在 setManager() 调用中) .

除此之外,如果一名经理负责两家餐厅,那就更有意义了。

关于java - 在另一个类的构造函数中传递类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22368138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com