回答
您可以在子類中分配變量。你不能做的是把語句放在只允許聲明的地方。 (注意:int i = 10;
是一個聲明 - 不聲明。)
在這種情況下,構造很可能會建立一個默認值合適的地方(亞型):
class b extends a {
public b() {
i = 1;
}
}
由於DAMO建議,一個初始化塊也可以工作。這在Initializing Fields tutorial討論:
通常情況下,你乾脆把代碼在構造函數中初始化實例變量,[但]有兩種選擇使用構造函數初始化實例變量:初始化塊和最終方法。
...是一個聲明 - 不是一個聲明。我認爲這叫做聲明聲明。大聲笑 –
@ su-我沒有在這裏使用精確的JLS支持的術語,很好的情況是這樣;問題的關鍵在於語言語法層面上的區別,根據具體情況允許(或禁止)不同的產品。 – user2246674
這很好:)我明白了。 –
當你使用的是默認的訪問修飾符,這意味着在a
類的屬性是同一個包中的所有類,包括子類b
訪問。但是,您必須在方法中訪問該屬性。
class a {
int i; // this is an instance variable
}
實例變量是一類級別,它們可以被分配到文字或引用變量,或者你可以把它有它的默認值,子類可以使用公共實例裏面的方法或構造不在一流的水平,你做的事:
class b extends a {
i = 3; // assgining a literal to i is compilation error
}
,因爲它是類字段和實例變量聲明,沒有什麼分配超類的實例變量的位置。
如果您想在類a中使用i
,您必須在某個方法或構造函數中使用它。
class b extends a {
a(){
i = 4;
}
void doSomething(){
i = 5;
}
}
所有的答案是正確的,但沒有一個人說,你可以做到這一點..
class b extends a {
{
i=1;
}
}
,這將編譯和執行是後a constructor
之前b constructor
- 1. 爲什麼我不能將父類分配給子類類型的變量?
- 2. 爲什麼我不能在try塊中分配對象變量?
- 3. 爲什麼Pagingnation類的變量不能分配?
- 4. 爲什麼不能將靜態類變量分配給堆棧?
- 5. 爲什麼我不能直接分配變量值?
- 6. 爲什麼我不能將循環分配給變量?
- 7. 爲什麼我不能將Scala對象分配給Java變量?
- 8. 爲什麼我不能將location.hash分配給一個變量?
- 9. 爲什麼我不能在JavaScript中的函數中分配一個變量?
- 10. 爲什麼變量有時不分配?
- 11. 爲什麼我不能分配element.innerHTML?
- 12. 爲什麼局部變量不能在聲明和全局變量分配?
- 13. 爲什麼我的子類不存在變量?
- 14. 爲什麼我不能更改變量?
- 15. 爲什麼Python類定義不能爲自己分配一個閉包變量?
- 16. 爲什麼最終字段變量不能在Java中分配爲空白?
- 17. 爲什麼右值不能分配到constexpr參考變量
- 18. 爲什麼你不能在子類中用常量覆蓋父變量? (PHP)
- 19. 爲什麼我可以爲變量分配不同類型的值?
- 20. 爲什麼我們需要投放變量而不分配它?
- 21. 爲什麼我不能在Quartz.NET中爲'typeof'使用變量?
- 22. 爲什麼我的變量不能自動裝配?
- 23. 爲什麼不在UIViewController子類中分配UIWindow對象?
- 24. 爲什麼我不能在我的settings.settings中分配一些類型?
- 25. 爲什麼我不能將TextLength分配給Long值類型?
- 26. 爲什麼我不能製作GPU變量? (無法使用cudaMalloc分配內存)
- 27. 爲什麼我不能將一個wordpress函數分配給一個變量?
- 28. 爲什麼我不能用這個程序重新分配父變量?
- 29. 爲什麼我不能訪問其他類的公共變量?
- 30. 爲什麼我的掃描儀類不能讀取3變量
做一個方法。 – gd1