【发布时间】:2019-12-28 03:57:57
【问题描述】:
我更熟悉其他语言。但我现在正在学习 java。我正在阅读访问修饰符。我发现只有公共类可以从外部访问。并且无法从外部访问 [default] 类。 但是由于我编写了一些简单的代码,我可以从外部访问非公共类:
Add.java
class Add{
int a(int x, int y)
{
return x+y;
}
}
MyClass.java
public class MyClass {
public static void main(String args[]) {
Add obj= new Add();
int sum= obj.a(10,20);
System.out.println("Sum of x+y = " + sum);
}
}
输出>>>
x+y 之和 = 30
所以请有人为我解释一下?我想知道这是怎么回事! 提前谢谢。
【问题讨论】:
-
这些类是否在同一个包中?
-
我已经付出了我所做的一切。我创建了这两个 java 文件,没有别的
-
@user222203 然后这两个类自动成为未命名包的一部分,这使得它们可以相互访问,因为 package-private 是 Java 中的默认访问修饰符。
-
答案是:它就是这样,因为那是语言的设计。背后没有更深层次的含义。您可以在教程中阅读有关访问修饰符及其行为的所有信息,例如这个Oracle tutorial on Controlling Acces to Member of Classes.
-
@Keiwan 您的评论可能就是答案,他们会自动将彼此视为同一个包,因为我没有给出任何包名..
标签: java class access-modifiers