java是公共类的默认成员
在关于访问说明符的讲座中,我正在学习NPTEL课程中的核心java,他们告诉我们,“当一个类是公共的时,所有使用默认访问说明符的成员也是公共的”。但是我试图从另一个包的类中调用公共类的默认方法。但它给出了一个编译时错误,这个概念错了吗
package week4;
public class TestClass2 {
void msg() {
System.out.println("Hi I am in class ");
}
public static void main(String[] args) {
TestClass2 obj=new TestClass2();
obj.msg();}
}
//2nd class code
package week3;
import week4.*;
public class TestClass1 {
public static void main(String[] args) {
TestClass2 obj=new TestClass2();
obj.msg();//compile Time error (msg() from week4 is not visible)
}
}
# 1 楼答案
这是错误的
默认访问修饰符的实际概念>;它被称为包私有,即所有成员在同一个包中可见,但不能从其他包访问
因此,要从
TestClass1
中的TestClass2
访问msg()
方法,必须将该方法声明为public void msg()