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

在Java中调用另一个类构造函数,java,constructor,Java,Constructor,我有一个小项目,需要完成,这是模拟银行。银行有分支机构,每个分支机构都要维护一份员工名单。有三种类型的员工:出纳员、职员和销售人员。 在我的分支类中,我必须创建Staff,然后存储它 在我的分支类中,我试图调用Clerk构造函数,以便它创建我需要的雇员,然后我想将这个Clerk实例存储到arraylist中: public void addStaff(String id, String name) { this.id = id; this.name = name; Cle

我有一个小项目,需要完成,这是模拟银行。银行有分支机构,每个分支机构都要维护一份员工名单。有三种类型的员工:出纳员、职员和销售人员。 在我的分支类中,我必须创建Staff,然后存储它

在我的分支类中,我试图调用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;
}
它似乎没有创建clerk实例 另外,除了调用每个实例clerk1、clerk2等,还有没有一种方法可以使用传入的名称作为实例名称

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

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

必须将Clerk实例分配给数组。代码的一个例子可以是

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

你还必须检查你的构造器。ArrayList staff=新的ArrayList;如果您希望访问该范围之外的员工内容,则该内容应为class属性。

您只需将新员工添加到分支机构中的列表中即可。所以

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);
}
最重要的是,让所有EmployeeScrerk、teller、sales扩展一个通用的“Employee”类,并在该类上添加construtor。在这种情况下,您可以更改分支中的人员数组:

private final List<Employee> staff;    

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

注意区别。您仅在构造函数中创建人员列表,然后引用将丢失。staff数组应该是类的一个属性。这样,您就可以在addStaff方法中使用了。

告诉我们如何在数组中保存它。如果您需要严重的帮助,请发布一个有效的日志。Clerk c=new Clerk01,Natalie->我刚刚调用了Clerk类构造函数。该Clerk引用指向addStaff方法中堆上的新对象,当您退出该方法时,它立即超出范围并符合垃圾收集的条件。您希望将该引用添加到分支类中的集合。将它添加到您的员工列表中。这里的问题还不错,但它缺少有关实际代码的关键信息。如果你把它包括在这里,请随时ping我,如果当时它关闭了,我会重新打开它。Employee确实继承了一个抽象Employee类,但是我有点困惑Employee构造函数应该是什么样子。第1部分和第2部分我理解了…谢谢你的帮助没有问题,请接受答案。关于Employee构造函数,它与“Clerk”类完全相同。但是在clerk类和其他类中,您可以这样做:publiccerk字符串id、字符串名称{superid,name}“super将使用super类构造函数”。您的clerk类应该定义为“public class clerk extensed Employee”。