1
我正在裝入一個奇怪的問題。 當傳遞一個子類的方法接受一個超類,這是可以的,因爲子類是超類,子類的變量似乎改變...... 有了更明確的例子:通過超類操作子類時值發生變化
import std.stdio;
void main() {
SuperClass myspc = new SuperClass();
showSupID(myspc); // shows 0, ok
SubClass mysbc = new SubClass();
showSupID(mysbc); // shows 0 again, wtf ?
showSubID(mysbc); // shows 3, ok
}
class SuperClass {
int id;
}
class SubClass : SuperClass {
int id = 3;
}
void showSupID(SuperClass object){
writeln(object.id);
}
void showSubID(SubClass object){ // I want to avoid to have subclass specific methods
writeln(object.id);
}
在我的代碼我想通過使用它們與超類的關係來集中化所有類型的子類的行爲。這種奇怪的行爲對我來說是個大問題。
我忘了什麼嗎?哪裏有問題 ?
謝謝。
好的,謝謝你的信息:) – Munrek
讓我再提一下[@property](http://dlang.org/property.html)屬性,它似乎也屬於這裏:) – vines