2014-04-24 83 views
0

我是Java新手,最近我在学习对象主题。但是,我不能这个代码的进展情况:错误“无关闭实例...”

public class ClassStudy { 

// Student Group 
class Student { 

    public String name = null; 
    public String surname = null; 

    boolean study(boolean does) { 
     // He studies. 
     boolean d = does; 
     return d; 
    } 
    boolean slackOff(boolean does) { 
     // He slacks off. 
     boolean d = does; 
     return d; 
    } 
} 

// Teacher Group 
class Teacher { 

    public String name = null; 
    public String surname = null; 

    boolean teach(boolean does) { 
     // He teaches. 
     boolean d = does; 
     return d; 
    } 
    boolean learn(boolean does) { 
     // He learns. 
     boolean d = does; 
     return d; 
    } 
} 

// Main Method 
public static void main(String[] args) { 
    Student student = new Student(); 
    Teacher teacher = new Teacher(); 
} 

} 

在main方法中,我得到了学生的错误,但并没有得到老师的。我不知道我是否犯了什么错误,或者我看不到它。必须做些什么?

的错误,我得到:

  • 局部变量学生的价值不使用
    • 型ClassStudy没有封闭实例访问。必须 通过类型为ClassStudy 的封闭实例(例如x.new A()其中x是ClassStudy的实例)限定分配。
    • 线断点:ClassStudy [行:44] - 主(字符串[])
+1

如果您是Java的新手,我会*强烈建议您避开嵌套类来开始。 –

回答

4

要么使Student(和Teacher)类的静态或使其顶层类

static class Student { 
    ... 
} 
+0

谢谢,这对我很好。 :) –

+3

这些应该是真正的顶级类,除非你有一个非常好的理由让它们成为公共的静态内部类。 - 编辑 - 只是看到他们不公开,所以我会保留我的判断大声笑。 O.O – jgitter

3

错误已经指出的问题:

型ClassStudy没有外围实例访问。必须符合 的分配,并带有封闭的ClassStudy类型实例(例如 x.new A(),其中x是ClassStudy的一个实例)。

如果没有其周围类的实例,除非它们是静态的,否则不能创建内部类的实例。 所以你有什么需要改变你的主要方法:

// Main Method 
public static void main(String[] args) { 
    ClassStudy classStudy = new ClassStudy(); 
    Student student = classStudy.new Student(); 
    Teacher teacher = classStudy.new Teacher(); 
} 

你没有得到的是你在哪里初始化老师行了同样的错误,是因为编译器停在它发现第一个错误编译的原因。