簡體   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