class HelloWorld {
public static void main(String arg[]) {
System.out.println("Hello World!");
}
}
使用javac HelloWorld.java
和java HelloWorld
,代码可以编译并运行良好。由于Java中的默认访问说明符是package
,它怎么可能?它必须得到外人的保护......
答案 0 :(得分:1)
访问修饰符在编译期间限制访问。但是允许使用任何访问修饰符加载类,使用反射来查找主方法并运行它。这是java工具从类中进行归档时所执行的操作。见http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html
答案 1 :(得分:0)
默认访问修饰符意味着您只能访问该包中的该类。
你在这里做的是,运行和编译类。 这与修饰符和可访问性无关。
你将永远运行&编译那样的类。
重要的是,您的班级可以在正在运行的班级或包中访问。
您无法在子包或其他包中使用默认修饰符访问类。默认类只能在同一个包中访问,否则会出现编译时错误。
就你的代码而言,你没有做那样的事情。
假设 -
class HelloWorld {
public static void main(String arg[]) {
System.out.println("Hello World!");
}
}
和
Class Hello extends HelloWorld{
// some code here
}
现在如果你编译类Hello,那么它会给你以下错误。
class, interface, or enum expected