3 回答

TA貢獻1936條經驗 獲得超7個贊
您在帖子“繼承”中提到的詞僅在您創建實例變量而不是靜態變量時適用。
因此,您需要做的第一件事是將靜態變量更改為實例變量。這是您可以創建 B 和 C 類的不同實例并擁有它們自己的值副本的唯一方法。
就像你寫的,
“保持靜態,仍然繼承自A”
這完全是矛盾的。只要它們保持靜態,它們就永遠不能被繼承。

TA貢獻1825條經驗 獲得超4個贊
簡短的回答是你不能。通過聲明它們,static
您基本上是在說“我只想要每個 JVM 這個變量的一個實例”(或者更準確地說:每個類加載器一個),從而刪除到這個對象實例的任何鏈接。

TA貢獻1797條經驗 獲得超6個贊
調用 super(3,4) 或 super(2,3) 是不可能的,因為你在這些類中沒有那個構造函數。
如果你調用 super ,你會為那個類的變量設置值。像 super(2,3) 將為 A 設置值,現在對于 B 類,您可以對字段進行任何操作。 總的來說,我不確定這個問題是否有效。 這是可以做得很好的事情似乎沒有用:
public class A {
static int a, aa;
A(){
System.out.println("aa");
}
A(int i,int j) {
this.a = i;
this.aa = j;
}
}
class B extends A {
B(int i,int j) {
super(i, j);
this.a=i+1;
this.aa=j+1;
System.out.println("in b="+a+" "+aa);
}
}
公共類測試 { 公共靜態無效主(字符串 [] args){
A a = new A(1,2);
B b = new B(2,3);
}
}
添加回答
舉報