我可以创建具有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问题
答案 0 :(得分:15)
protected
涉及为成员提供包含类型访问权限的子类。这里没有包含类型,那是什么意思?
请注意,这与main
无关......它适用于任何顶级类。它的 对于要保护的嵌套类型有效:
public class Foo {
protected static class Bar{}
}
这允许Foo
的子类访问Bar
。
答案 1 :(得分:2)
受保护或私有类没有意义 - 作为顶级课程,而不是内部课程。这样的课程不可用。受保护的意思是,孩子们可以看到班级中的元素。但如果全班都是包装怎么办呢。在这种情况下,任何其他类甚至可以看到这样的类(即使在相同的包中),直到它扩展这样的类。这很奇怪,这就是它被禁止的原因。
答案 2 :(得分:0)
您是否通过将封闭类视为受保护来影响主要方法的可见性? 据我所知,要获得一个主要方法,您需要确保两件事:
希望这会有所帮助:)