[英]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.