2011-03-30 32 views
0

例:是否有可能在Java中將受保護的變量從繼承的類中更改?

class A { 
    protected Integer x; 

    class A() { 
     x = new Integer(0); 
    } 

    public setX(Integer m) { 
     x = m; 
    } 
} 

class B extends A { 

    public class B() { 
     super(); 
    } 

    public static void main() { 
     B b = new B(); 
     b.setX(69); 
     System.out.println("Value of x is: " + b.x); // expect to be 69. Is it correct?  
    } 
} 
+5

順便說一下,你可以試試它在你自己的:) – 2011-03-30 08:52:06

+0

我敢打賭,只要你問這個問題,就像它會做試驗一樣。也許你在本地機器上有不同的結果?請不要把這當作攻擊,你已經問了一個完全有效的問題:) – Rich 2011-03-30 08:53:14

+0

謝謝大家。我其實只是想驗證我的想法,因爲我在調試一個大項目的過程中。再次感謝! – root 2011-03-30 09:03:30

回答

3

是的,這是什麼是protected爲:)

+0

我剛編輯了我的密碼。你能看看嗎? – root 2011-03-30 08:52:26

+1

@tsubasa - 是的,我看到你的代碼沒有問題:)順便說一下,我們不是在這裏的編譯器:) – 2011-03-30 08:55:38

+0

我明白:) – root 2011-03-30 09:03:55

2

受保護的訪問裝置,所述構件(或方法)是從類層次結構中相同的封裝內可見。 所以,是的,你的代碼確實有預期的結果。

0

在繼承中使用受保護的變量並不是一個好習慣。

這樣做的正確方法(不違反封裝)是使用私人訪問器來訪問變量和公共(或受保護的)獲取器和設置器。

相關問題