2014-12-09 19 views
3

i對同一類中的其他方法是不可見的嗎?Protect int,只對指定方法可見

private int i; 

private void updateI(int i) { 
    this.i = i; 
} 
+0

不讓它全球 – brianforan 2014-12-09 13:25:47

+0

這個問題似乎是題外話,因爲它顯然是一個XY問題。 – 2014-12-09 13:26:53

+0

請注意,如果您要隱藏「i」,則命名您的方法'updateI'並不聰明...... – Maroun 2014-12-09 13:28:18

回答

1

不,沒有這樣的訪問修飾符。類級別是最好的每個實例範圍。

您可能需要考慮拆分單獨的類中的類的狀態,以便i可以是較小類的字段。

實施例:

class PositiveInt { 
    int i; 
    public void updateI(int i) { 
     if (i < 0) throw new IllegalArgumentException(...); 
     this.i = i; 
    } 
    // ... 
} 

class YourClass { 

    // No need to worry about 'i' staying positive in a large and complex class 
    PositiveInt i = new PositiveInt(); 

    void updateI(int newI) { 
     i.updateI(newI); 
    } 
} 
5

否 - 類的所有成員是彼此可見。

如果你發現你的類的一些成員不應該訪問特定成員,則可能表示您應該分割你的等級達到 - 想想你是否可以更精細地劃分的信息,基本上是這樣。當然,這並不總是一個解決方案 - 但是當然,如​​果你發現有兩個或三個相互關聯的領域,並且只有一些方法應該觸及,那通常表明你應該把它們放在他們自己的類型中。

0

由於i是一個類的成員變量,所以對其他非靜態方法將是可見的。如果你希望它的作用域被限制在一個方法中,它就不能是類成員。

有關Java中變量作用域的簡單介紹,您可以查看this page

1

否......私人字段只能在您的班級中以所有方法顯示。 你可以繼承這個類來隱藏字段。

0

爲什麼你想要一個類變量只對特定方法可見。

方法在短短聲明變量所以纔可見該方法:

private void updateI(int x) { 
     int i = x; 
    } 
+0

這只是爲每個方法調用創建一個'i',而不是該對象的一個​​'i'屬性。 – 2014-12-09 16:21:59

相關問題