在Java中调用另一个类的构造函数

问题描述:

我有一个需要完成的小型项目,它正在模拟一家银行。银行有分支机构,每个分支机构都要维护一个员工名单。有三种类型的员工,柜员,文员和销售人员。 在我的Branch类中,我必须创建工作人员然后存储它。在Java中调用另一个类的构造函数

在我科类我试图致电书记官构造函数,以便它创建的员工我需要的,然后我想这个店员实例存储到一个ArrayList:

public void addStaff(String id, String name) { 
    this.id = id; 
    this.name = name; 
    Clerk clerk = new Clerk(id, name); 
} 

,并在我的文员类是

public Clerk(String id, String name) { 
    this.id = id; 
    this.name = name; 
} 

它doenst似乎创造店员实例 加而不是调用每个实例,clerk1,clerk2等,有没有使用传递作为实例名称的名称的方法吗?

为阵,我要实例推到它

// constructor 
public Branch(String branchName) { 
    this.branchName = branchName; 
    ArrayList<Object> staff = new ArrayList<Object>(); 
+6

向我们展示如何将其保存在阵列中 – UDKOX

+7

如果您需要认真的帮助,请发布有效的[mcve]。 –

+0

'Clerk c = new Clerk(“01”,“Natalie”)' - >我只是叫了Clerk类的构造函数。 – progyammer

您只需在分支中的列表中添加新员工。所以

1)修改addStaff,删除this.id = id,this.name = name。该部门不需要了解员工的详细信息。

2)将员工添加到您在构造函数中创建的数组。分公司将充满这位新员工。

结果:

public void addStaff(String id, String name) { 
    Clerk clerk = new Clerk(id, name); 
    staff.add(clerk); 
} 

3也是最重要的),让你的所有员工(文员,出纳,销售)扩展了通用的“雇员”类,并添加construtor只是该类。在这种情况下,您更改分支中的员工数组:

private final List<Employee> staff;  

public Branch(String branchName) { 
    this.branchName = branchName; 
    staff = new ArrayList<Employee>(); 
} 

请注意区别。您只在构造函数中创建了职员列表,然后引用丢失。员工数组应该是您班级的属性。那么你可以在你的addStaff方法中使用。

+0

员工确实继承了一个抽象的Employee类,但是我不知道该怎么构造这个Employee构造函数应该看起来像..part1和2我明白了......感谢您的帮助 – user2904400

+0

没问题,请接受答案。 关于Employee构造函数,它和'Clerk'类完全相同。然而在职员类和其他你做的: 公共职员(字符串id,字符串名称){ super(id,name) } 'super将使用超类构造函数'。你的职员类应该定义为“公共职员职员扩展员工”。 –

必须秘书实例分配给数组。一个代码示例可能是

public void addStaff(String id, String name) { 
this.id = id; 
this.name = name; 
Clerk clerk = new Clerk(id, name); 
this.yourArrayList.add(clerk); 
} 

而且你还必须检查你的构造函数。 ArrayList<Object> staff = new ArrayList<Object>();如果你想访问该范围之外的员工内容,它应该是一个类属性。