2014-05-08 78 views
0

我想創建一個類,然後創建另一個類。這門課將直接與上級課程相連。它應該看起來像下面的(不是代碼,只是模式):其他類中的Java類,構造函數

class company 
    string name 

    class employee 
     string firstName, lastName; 
     int age 

當然,我有構造等。現在,我想創建公司「G」和2歲的員工女男該公司的內部。也許在另一個班級上課並不合理,我應該只和現場公司一起創建班級員工?

下面的代碼無法正常工作,編譯器說:包含company.employee一個封閉的情況下,需要

nowa=new company('g',2); 
nowa.prac=new company.employee('f','m',2); 
下面

全碼:

public class program 
{ 
public static class company 
{ 
    char name; 
    int duration; 

    public class employee 
    { 
     public char imie,nazwisko; 
     public int wiek; 
     public employee(char a,char b,int w) 
     { 
      imie=a; 
      nazwisko=b; 
      wiek=w; 
     } 
    } 
    public company(char n,int c) 
    { 
     name=n; 
     duration=c; 
    } 
} 



public static void main(String []args) 
{ 
    company nowa=new company('g',2); 
    nowa.empl=new employee('f','m',2); 
} 
} 
+0

安置自己當前的代碼提供指導。 –

+0

什麼是firma和pracownik?驗證你的代碼。 –

+0

[實例化內部類]的可能的重複(http://stackoverflow.com/questions/4070716/instantiating-inner-class) – Seelenvirtuose

回答

0

這將是我的做法

public class Employee { 

    //...code 
} 

public class Company { 
//...code 
private List<Employee> employees; 
} 


public static void main(String []args) 
{ 
    Company nowa=new company('g',2); 
    nowa.getEmployees.add(new Employee('f','m',2)); 
} 
} 

從方法的主要變化是:

  1. 兩個類都在它自己的文件(均是頂級類)。
  2. 公司有員工名單(一家公司的HAS員工)。通過列表,您可以輕鬆添加和刪除給定公司的員工。
  3. 類名大寫(根據使用Upper Camel Case的Java命名約定)。
0

您的內部類員工不是靜態的,所以您需要外部類的實例來創建內部類實例。沒有公司就不可能有員工!

company nows = new company('g',2); 
nowa.empl = nowa.new employee('f','m',2); 

在這種情況下,內部類實例具有對外部類實例的隱式引用(在employee中使用company.this來訪問它)。

如果你想使類的更多獨立的,可以使員工沒有參考外部類狀態內部類:

public static class employee 
... 

company nows = new company('g',2); 
nowa.empl = new employee('f','m',2); 
相關問題