0

私は主に Web アプリケーションのフロント エンド GUI を開発するプロジェクトを開始していますが、より優れた OOP 機能のために jQuery の代わりに MooTools を使用することにしました。しかし、テストを行っているときに、Java 開発者としての私の観点からは奇妙なことに遭遇しました。問題は次のとおりです。

var Parent = new Class({
    initialize: function() {
        console.log("Parent constructor call!");
    },
    show: function() {
        console.log("From Parent!");
    },
    someParentMethod: function() {
        console.log("Some parent method");
        this.show();
    }
});

var Child = new Class({
    Implements: Parent,
    initialize: function() {
        console.log("Child constructor call!");
    },
    show: function() {
        console.log("From Child!");
    },
    display: function() {
        this.show();
        this.someParentMethod();
    }
});

var c = new Child();
c.display();

これの出力は次のとおりです。

Parent constructor call!
Child constructor call!
From Child!
Some parent method
From Child!

ここで少し混乱しています...最後の行は「From Parent!」と読むべきではありませんか?

4

1 に答える 1

3

いいえ、それがポリモーフィズムが機能することになっている方法です。Parentクラスで定義されたメソッドを呼び出している場合でも、Childインスタンスにいるため、Childでオーバーライドされたメソッドが呼び出されます。

于 2013-03-04T13:11:22.523 に答える