簡體   English   中英

其他類,構造函數中的Java類

[英]Java class inside other class, constructor

我想在其中創建一個類,然后再創建另一個類。 本課程將直接與上等課程聯系。 它應該看起來像以下內容(不是代碼,只是模式):

class company
    string name

    class employee
        string firstName, lastName;
        int age

當然,我有構造函數等。現在我想在公司內部創建公司'g'和2歲的員工fm。 也許在另一個班級內上課是沒有道理的,我應該與現場公司一起創建班級員工?

編譯器說,下面的代碼不起作用: 包含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);
 }
 }

嘗試

nowa.prac = nowa.new firma.pracownik('f','m',2);

以下是有關原因的更多信息:

http://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

這是我的方法

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. 公司有一個員工列表(一家公司有員工)。 使用列表,您可以輕松添加和刪除給定公司的員工。
  3. 類名大寫(根據Java命名約定,使用Upper Camel Case)。

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

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

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

如果要使類更獨立,則可以使員工成為狀態內部類,而無需引用外部類:

public static class employee
...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM