-2
有人可以解釋我的機制當基類對象使用派生類初始化時會發生什麼。什麼是對象的類型,對象是作爲基礎還是派生的?基類變量使用派生類初始化
有人可以解釋我的機制當基類對象使用派生類初始化時會發生什麼。什麼是對象的類型,對象是作爲基礎還是派生的?基類變量使用派生類初始化
對象的類型不會更改,因此該對象將表現爲派生類的對象。
但由於變量的類型是基類,因此不能直接訪問派生類的類成員。因此,必須在基類中聲明方法並在派生類中重寫它們以使用派生類的特徵。
請注意,這僅適用於靜態類型變量(如Java,C++,C#)的語言。
下面是Java中的一個簡單的例子:
class BaseClass {
public void info() {
System.out.println("base class");
}
}
class DerivedClass extends BaseClass {
@Override
public void info() {
System.out.println("derived class");
}
public void specialMethod() {
}
}
public class Test {
public static void main(String[] args) {
BaseClass b = new DerivedClass();
b.info();
System.out.println("Type of b: " + b.getClass());
// not allowed:
// b.specialMethod();
}
}
這將產生以下輸出:
derived class
Type of b: class DerivedClass
如何編寫代碼和調試自己呢? –
「基類對象使用派生類初始化」或_base類引用使用派生類object_初始化? –
我認爲這個問題對於網站來說過於寬泛 - 因爲它可能涉及一些公正的解釋。 –