为什么不能保护java主类?

时间:2010-09-14 06:14:33

标签: java

我可以创建具有Access说明符“public”或默认值的Main类。

但为什么我不能用protected创建。默认情况下,为什么不保护。

公开:

public class MainClass {
 public static void main(String[] args) {
 }
}

默认值:

class MainClass {
 public static void main(String[] args) {
 }
}

受保护的:

protected class MainClass {
 public static void main(String[] args) {
 }
}

显示错误: MainClass类的非法修饰符;只有公共的,抽象的和final是允许的MainClass.java SCJP / src第1行Java问题

3 个答案:

答案 0 :(得分:15)

protected涉及为成员提供包含类型访问权限的子类。这里没有包含类型,那是什么意思?

请注意,这与main无关......它适用于任何顶级类。它的 对于要保护的嵌套类型有效:

public class Foo {
    protected static class Bar{}
}

这允许Foo的子类访问Bar

答案 1 :(得分:2)

受保护或私有类没有意义 - 作为顶级课程,而不是内部课程。这样的课程不可用。受保护的意思是,孩子们可以看到班级中的元素。但如果全班都是包装怎么办呢。在这种情况下,任何其他类甚至可以看到这样的类(即使在相同的包中),直到它扩展这样的类。这很奇怪,这就是它被禁止的原因。

答案 2 :(得分:0)

您是否通过将封闭类视为受保护来影响主要方法的可见性? 据我所知,要获得一个主要方法,您需要确保两件事:

  1. 附上课程是公开的。 (我认为它也可以是默认的)
  2. 封闭类和父文件具有相同的名称。
  3. 希望这会有所帮助:)