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

时间:2016-12-06 17:50:41

标签: java constructor

我有一个需要完成的迷你项目,即为银行建模。银行有分支机构,每个分支机构都要维护一份员工名单。有3种类型的员工,Teller,Clerk和Sales。 在我的Branch类中,我必须创建Staff然后存储它。

在我的Branch类中,我试图调用Clerk构造函数,以便创建我需要的员工,然后我想将此Clerk实例存储到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;
}

它似乎正在创建职员实例 加上而不是调用每个实例,clerk1,clerk2等,有没有办法使用传入的名称作为实例名称?

对于数组,我打算将实例推送到它

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

2 个答案:

答案 0 :(得分:0)

您必须将Clerk实例分配给数组。代码示例可以是

ArrayList<Object> staff = new ArrayList<Object>();

而且你还要检查你的构造函数。 $('#btnTestCore').click(function () { var urlname = encodeURI("http://clientwebsite.online/api/GetURLName/") $.ajax({ url: 'http://ajaxserver.com/api/GetURLName?urlname=' + urlname, dataType: 'json', type: 'GET', contentType: "application/json; charset=utf-8", success: function (data) { alert(data); }, error: function (data) { alert('failed.'); } }); }); 如果您想访问该范围之外的人员内容,则应该是类属性。

答案 1 :(得分:0)

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

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,最重要的是)让所有员工(职员,出纳员,销售人员)扩展一个通用的“员工”课程,并在该课程中添加建设者。在这种情况下,您可以在分支中更改人员数组:

private final List<Employee> staff;    

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

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