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);
}

私のコードでは、スーパークラスとの関係を使用して、あらゆる種類のサブクラスのアクションを集中化したいと考えています。この奇妙な振る舞いは私にとって大きな問題です。

私は何かを忘れましたか?問題はどこだ ?

ありがとう。

4

1 に答える 1