我想创建一个类,然后创建另一个类。本课程将与上级班级直接联系。它看起来应该如下(不是代码,只是架构):
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)
尝试
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));
}
}
您的方法的主要变化是:
答案 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);