有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    When a class is public all its members with default access specifier are also public

    这是错误的

    默认访问修饰符的实际概念>;它被称为包私有,即所有成员在同一个包中可见,但不能从其他包访问

    因此,要从TestClass1中的TestClass2访问msg()方法,必须将该方法声明为public void msg()