繁体   English   中英

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

[英]Passing a Class type within a constructor of another class?

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

我正在学习Java,并遵循“ Java:学习编程”的知识,在学习过程中,我将运用这些知识并创建自己的场景,以了解如何应用“多态”。 如果有人可以帮助我了解如何完成此任务,我将不胜感激。 我有三节课:

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

员工类和经理类非常简单。 我正在尝试创建一家餐厅,每家餐厅都有一位经理。 我的问题是:

我应该将“ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM