在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>();
您只需在分支中的列表中添加新员工。所以
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方法中使用。
员工确实继承了一个抽象的Employee类,但是我不知道该怎么构造这个Employee构造函数应该看起来像..part1和2我明白了......感谢您的帮助 – user2904400
没问题,请接受答案。 关于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>();
如果你想访问该范围之外的员工内容,它应该是一个类属性。
向我们展示如何将其保存在阵列中 – UDKOX
如果您需要认真的帮助,请发布有效的[mcve]。 –
'Clerk c = new Clerk(“01”,“Natalie”)' - >我只是叫了Clerk类的构造函数。 – progyammer