繁体   English   中英

公共 class 的默认成员

[英]Default members of an public class

我正在学习核心 java 从该课程的 NPTEL 课程中关于访问说明符的讲座中,他们告诉我们“当 class 公开时,其所有具有默认访问说明符的成员也是公开的”。 但是我试图从另一个 package 的 class 调用公共 class 的默认方法。 但是它给出了一个编译时错误这个概念是错误的吗???

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)

    }

}

当 class 为公共时,其所有具有默认访问说明符的成员也是公共的

这是错误的。

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

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

它对同一个 package 中的类是默认的/可访问的。 尝试从 package 第 4 周内的 class 访问相同的 msg() 方法,您应该可以。

当我们开始在 Java 中编码时,我们被告知只有一个主要方法,我看到你将它放入两个类中,另外,如果你想在它们之间分享方法中的“氛围”,你必须至少使用 public void味精(); 并根据功能,使用 return(); 应该是必须的。

另外,你应该知道“静态方法”的概念,这意味着你将能够使用其他方法的属性,在这种情况下,你的主方法

看这个例子:

//- - - - 示例开始 - - - - //- - - - -方法 class - - - - - -

package week4;

public class TestClass2 {

public static void msg() {

    System.out.println("Hi I am in class ");

    }
}

//- - - -主要 class - - - - -

package week3;

import week4.*;

public class TestClass1 {

   static TestClass2 testit = new TestClass2();


 public static void main(String[] args) {
    TestClass1 myobject= new TestClass1();
    myobject.testit.msg();
    
}
 
}

//- - - - 示例结束 - - - - -

/希望它有用,记住,static 在从方法管理数据时非常重要/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM