2016-08-24 28 views

回答

5

這是因爲您無法更改最終字段的值。

但是,如果你真的想本身它不同的值,你可以這樣做:

class A { 
    protected final boolean b; 

    protected A() { 
    this(false); 
    } 
    protected A(boolean b) { 
     this. b = b; 
    } 
} 

class B extends A { 
    public B() { 
     super(true); 
    } 
} 
+1

我在說構造函數。 – stonar96

+0

@ stonar96當你調用超類的構造函數時,你設置了'b'的值。如果您想在子類中將其設置爲不同的值,則需要將該值傳遞給超類構造函數。 – user902383

1

它不能這樣做,因爲final字段的定義是,它只能被分配一次。如果A()已經分配了保護字段,則在B()中再次分配它仍然違反「僅一次」,即使它在構造函數中完成。

相關問題