2016-12-06 85 views
-2

我有一個需要完成的小型項目,它正在模擬一家銀行。銀行有分支機構,每個分支機構都要維護一個員工名單。有三種類型的員工,櫃員,文員和銷售人員。 在我的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

回答

0

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

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將使用超類構造函數'。你的職員類應該定義爲「公共職員職員擴展員工」。 –

0

必須祕書實例分配給數組。一個代碼示例可能是

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>();如果你想訪問該範圍之外的員工內容,它應該是一個類屬性。

相關問題