比方說,我有以下代碼我應該如何使用超類的實例構造一個子類?
public class SuperClass {
protected int super_class_value;
public SuperClass (int value) {
this.super_class_value = value;
}
}
public class Subclass extends SuperClass {
protected int subclass_value;
public SubClass(int super_class_value, int subclass_value) {
super(super_class_value);
this.subclass_value = subclass_value;
}
}
不過,現在我希望能夠通過一個超類對象轉換成子類構造函數。我會怎麼做?
public SubClass(SuperClass super_class, int subclass_value) {
//What do I do here?
this.subclass_value = subclass_value;
}
基本上,我想要做這樣的事情...
public SubClass(SuperClass super_calss, int subclass_value) {
super(super_class.super_class_value);
this.subclass_value = subclass_value;
}
但如果超類是比較複雜的,我不希望每個值添加到超()調用。相反,我想簡單地傳入一個已經存在的對象,並將其用作超類。
我想這樣做......
public SubClass(SuperClass super_class, int subclass_value) {
super(super_class);
this.subclass_value = subclass_value;
}
但我不知道這是允許的?
似乎我可以做到上述,如果我添加一個構造函數的SuperClass定義。但是,這將是什麼樣子?
public class SuperClass {
protected int super_class_value;
public SuperClass (int value) {
this.super_class_value = value;
}
public SuperClass (SuperClass super_class_object) {
//What is done here?
}
}
目前你的代碼看起來很好...你想用'super_class'參考做究竟是什麼? – chancea 2015-02-11 20:00:29
你能不能像子類一樣在子類中傳遞它?super(super_class_value);'? – Apurva 2015-02-11 20:02:13
爲什麼你想要傳遞超類對象? – Kode 2015-02-11 20:05:04