0
class HelloWorld {
    public static void main(String arg[]) { 
        System.out.println("Hello World!");
    }
}

使用javac HelloWorld.javaand java HelloWorld,代码编译并运行良好。由于 Java 中的默认访问说明符是package,这怎么可能?它必须有外人保护...

4

2 回答 2

1

访问修饰符在编译期间限制访问。但是允许使用任何访问修饰符加载一个类,使用反射找到主要方法并运行它。这就是 java 工具在从类中启动时所做的事情。请参阅http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html

于 2013-07-02T09:57:50.713 回答
0

默认访问修饰符意味着您只能访问该包中的该类。

你在这里做的是,运行和编译类。这与修饰符和可访问性无关。

您将始终像这样运行和编译类。

重要的是您的类可以在正在运行的类或包中访问。

您不能在子包或其他包中访问具有 Default 修饰符的类。默认类只能在同一个包中访问,否则会出现编译时错误。

就您的代码而言,您没有做任何类似的事情。

认为 -

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
于 2013-07-02T09:51:55.797 回答