另一个类里面的Java类,构造函数

时间:2014-05-08 07:13:13

标签: java class object

我想创建一个类,然后创建另一个类。本课程将与上级班级直接联系。它看起来应该如下(不是代码,只是架构):

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);
 }
 }

3 个答案:

答案 0 :(得分:0)

尝试

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

以下是更多原因:

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

答案 1 :(得分: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. 公司有员工名单(公司有员工)。使用List,您可以轻松添加和删除给定公司的员工。
  3. 类名称大写(根据Java命名约定,使用Upper Camel Case)。

答案 2 :(得分:0)

您的内部类员工不是静态的,因此您需要外部类的实例来创建内部类实例。没有公司,员工可能不存在!

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

在这种情况下,内部类实例具有对外部类实例的隐式引用(使用company.this内部员工来访问它)。

如果要使类更加独立,可以使employee成为状态内部类,而不引用外部类:

public static class employee
...

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