我知道这是一个愚蠢的问题,但我仍然怀疑需要清除.
我的问题是,为什么我们不能将课程定义为protected?
我知道我们不能,但为什么呢?应该有一些具体的原因.
好的,所以java源文件必须至少有一个公共类,该文件应该被称为"class-name.java".很公平.
因此,如果我有一个类,那么以下将编译:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我从上面的代码中删除'public'访问修饰符,那么代码仍会编译.我只是不明白.删除它,代码如下:
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,由于我删除了"public"访问修饰符,因此我的类具有默认或包私有访问权限,即它不能从外部访问,只能从包中访问.
所以我的问题是,上面的代码是如何编译的?在这种情况下,文件HelloWorld.java没有'public'HelloWorld类(只有一个包私有的HelloWorld.class),因此我的理解不应该编译.
感谢您回答我的问题!
问候,匿名
请考虑以下代码,其中HelloWorld类具有默认或包私有访问权限:
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
Run Code Online (Sandbox Code Playgroud)
并假设上面的代码保存在一个名为的文件中HelloWorld.java.所以我的问题是:既然HelloWorld现在是一个包私有类,它是如何工作的?这个main()方法不应该在包装上可见或可访问,对吗?
如果课程HelloWorld被公开,那对我来说是完全合理的.仅当使用默认的包 - 私有访问声明它时才会出现混淆.