2017-06-06 160 views
-3

如何訪問私有類中的私有方法?訪問私有類中的私有方法

我的代碼:

public class OuterClass { 

    private InnerClass ic; 

    public OuterClass(){ //Constructor 
     this.ic = new InnerClass(); 
    } 

    public InnerClass getInnerClass(){ 
     return this.ic; 
    } 

    private class InnerClass { 
     private VeryInnerClass vic; 

     private void InnerClass(){ 
      this.vic = new VeryInnerClass(); 
     } 

     private void method(Object item){ 
      //Job 
     } 

     private class VeryInnerClass { 
      private Object item; 

      private void VeryInnerClass(){ 
       //Constructor 
      } 

     }//End VeryInnerClass 

    }//End InnerClass 

}//End OuterClass 

這是主代碼:

public class Main { 

    public static void main(String[] args) { 

     OuterClass oc = new OuterClass(); 
     Object item = new Object(); 

     oc.getInnerClass().method(item); 

    } 

} 

的錯誤是類型OuterClass.InnerClass是不可見的,但我用一個getInnerClass()方法,所以我不不知道如何訪問method(Object item)

+4

你確定你知道'private'是什麼意思嗎? – tnw

+1

私有方法永遠不能從其擁有的對象之外訪問。如果你想訪問'method',你必須公開它。 – Korashen

+1

你可以通過反射來調用它。 –

回答

1

不,你不能。

私人修飾符指定了成員只能在自己的類訪問

所以,如果你想訪問私有方法,那麼你應該與publicprotected定義它們沒有修飾符取決於在這種情況下更合適的。

查看更多資訊doc

+0

'公衆「是不需要的。有'保護'和沒有修飾符訪問。根據用途,可能比另一種更合適。 –

+0

@ChristopherSchneider是的你是對的。我會修改我的答案。 –

0

您不能直接訪問類的範圍之外的私有方法/私有內部類。