簡體   English   中英

使用對象訪問私有方法

[英]Access private methods using objects

在這段代碼中:

public class Main{
    private void method()
    {
        System.out.println("inside method");
    }
    public static void main(String[] args) {
    Main obj = new Main();
    obj.method();
    }
}

為什么我們在課堂上可以使用類中的對象訪問私有方法,而我們不能在課外進行訪問? (我的意思是什么是合乎邏輯的原因?)

另一種情況是: main方法是靜態的,為什么沒有編譯器錯誤抱怨“從靜態方法訪問非靜態方法”?

  1. 因為它是私人的。 類本身可以使用其私有屬性和行為。 外部課程不能使用的原因是阻止外部課程干涉私人事務。 簡單不是嗎?

  2. 在這里,您實際上是使用實例上下文調用該方法。 嘗試不用obj調用它肯定會抱怨。 順便說一句,誰說你不能從靜態方法訪問非靜態方法 實際上,您無法在靜態上下文中調用非靜態方法。

你的困惑來自對private意味着什么的誤解。 private關鍵字表示只能從聲明類的上下文中訪問該成員, 不僅僅是在包含實例的上下文中。 您可以自己調用私有方法(最常見的)或相同或派生類型的其他實例(如您所示)。

從靜態方法中調用實例方法沒有問題,但是你必須有一個實例來調用它們(你有obj )。

回答你的第二個問題: - 你是通過該類的對象調用方法,但如果你直接調用該方法,它會給你一個錯誤,用於從靜態方法訪問非靜態方法。

第一個: - 你從類中調用方法,類可以使用它的私有成員

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM