[英]javac gives no warning when a class with default access contains public members
[英]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.