2017-02-18 139 views
-2

所以我只是在尋找澄清。我有一個equals方法,它可以通過傳入對象的cv.ch返回實例變量而不用返回它的方法。這是怎麼回事?瞭解如何返回實例變量而無法返回它

public static class Test { 
    private int v; 

    private char ch; 

    public Test(int v, char ch) { 

     this.v= v; 

     this.ch= ch; 

    } 

    public boolean equals(Object o) { 
     if (this == o) return true; 
     if (o == null || this.getClass() != o.getClass()) 
      return false; 
     Test cv = (Test) o; 
     if (this.v == cv.v && this.ch == cv.ch) 
      return true; 
     return false; 

    } 

} 

編輯:我改寫我的問題,使其更好地理解

+0

*「我以爲你總是需要一種方法來返回實例變量?」 - - 這是不正確的。 –

回答

0

的私有成員變量都擁有它們,測試類訪問。任何在Test中的代碼都可以訪問這些字段,而不管它是通過「this」還是其他變量。

特別是JLS指出「如果成員或構造函數被聲明爲私有的,那麼當且僅當它存在於包含成員聲明的頂級類(§7.6)的主體內時才允許訪問或構造函數「。