我遇到了一个奇怪的问题。当将子类传递给接受超类的方法时,这没关系,因为子类是超类,子类的变量似乎发生了变化......有一个更明确的例子:
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);
}
在我的代码中,我想通过使用它们与超类的关系来为所有类型的子类集中一个动作。这种奇怪的行为对我来说是个大问题。
我忘了什么吗?问题出在哪里 ?
谢谢。