同一文件中的公共类和私有类

时间:2011-06-01 08:00:36

标签: java

我在同一个java文件中创建了一个公共和私有类。它没有被编译。但是,如果我保留一个公共类和一个没有访问说明符的类。它会被编译。这是什么原因?

4 个答案:

答案 0 :(得分:9)

Toplevel私有类是无稽之谈,因为没有其他类可以访问此类。这就是你得到编译错误的原因..

JLS声明;

  

访问修饰符受保护和   private仅适用于成员类   在直接封闭的课程中   声明(§8.5)并进行了讨论   在§8.5.1。

答案 1 :(得分:4)

如果您尝试创建一个结构化的.java文件,以便根结构中有多个公共类定义或私有类定义,如下所示:

public class SomeClass { ... }
public class SomeOtherClass { ... }

private class SomePrivateClass { ... }

会有错误。但是,您可以在公共类类中定义私有类,如下所示:

public class SomePublicClass {
    private class SomePrivateClass { ... }
    ...
}

在java文件中只有一个基类,这将编译。

编辑:根据Joachim Sauer的评论更正了有关法律类结构的信息。

答案 2 :(得分:0)

将外部类指定为private是违法的。如果没有访问修饰符,则默认只能从同一个包中访问。

更多信息:http://en.wikibooks.org/wiki/Java_Programming/Access_Modifiers

答案 3 :(得分:0)

除非包含在另一个类中,否则不能声明类private。这是按规范JLS - 8.1.1 Class Modifiers