我在Java中很新,我希望有人能幫我解決這個問題。Java - 靜態類及其父初始化
我必須創建一個方法,將按以下方式調用: Child.getI()
;
Parent.java
package MyTest;
public class Parent {
private static int i;
public Parent(int x){
i = x;
}
public static int getI(){
return i;
}
}
Child.java
package MyTest;
public class Child extends Parent {
public Child(int x) {
super(x);
}
}
我應該如何設計我的課,所以當我打電話Child.getI()
,它會首先初始化Child
類?這絕對不會像我這樣做。
你應該真的檢查'static'的含義。如果你這樣做了,你會注意到'我應該如何設計我的類,所以當我調用Child.getI()時,它將首先初始化Child類'沒有什麼意義,並且設置'static' 'Parent''Constructor'中的變量'i'不應該是正確的。 – SomeJavaGuy
'static'字段和方法不會被繼承。 'i'和'getI()'僅屬於'Parent'。如果這是你想要做的事情,那麼它會表明你的設計存在問題。通過這樣做你究竟在做什麼? – JonK
我認爲你的第一個錯誤是從構造函數中設置靜態變量。這可以完成並且有時是有用的,但是如果您將其作爲初學者來使用,這意味着您不瞭解構造函數應該做什麼。它應該初始化類的當前實例,而不是靜態常見的資源。這些應該使用初始化程序或靜態塊進行初始化,並使用靜態方法進行更改。 – RealSkeptic