【问题标题】:Passing a Class type within a constructor of another class?在另一个类的构造函数中传递一个类类型?
【发布时间】:2014-03-13 02:49:21
【问题描述】:

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

我正在学习 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”声明构造函数。我应该用构造而不是声明“经理”的实例吗 请通过构造函数传递“经理类型”?

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

【问题讨论】:

    标签: java polymorphism


    【解决方案1】:

    这在一定程度上是一个品味问题,以及你将如何处理这些对象。

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

    由于餐厅本身不是经理,我建议它不应该在其构造函数中获取经理的属性,而应该分配一个经理(在构造函数中或在 setManager() 调用中) .

    除此之外,如果一位经理负责两家餐厅,这将更有意义。

    【讨论】:

    • 这样想,你的餐厅有经理,或者你的餐厅有名字、薪水和经验吗?
    • 谢谢@keshlam。我倾向于我的第二个构造函数,我认为你的方法也是第二个构造函数?
    • 我根据您提供给我们的最少数据的建议将是第一选择。将 Manager 视为对象,而不是 Restaurant 的属性。
    猜你喜欢
    • 1970-01-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多