0

我正在开始一个项目,我将主要为 Web 应用程序开发前端 GUI,并决定使用 MooTools 而不是 jQuery,因为它具有更好的 OOP 功能。但是,在进行测试时,从我作为 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!

现在我在这里有点困惑......最后一行不应该是“来自父母!”吗?

4

1 回答 1

3

不,这就是多态应该如何工作的。即使您正在调用在 Parent 类中定义的方法,您仍然在 Child实例中,因此将调用 Child 中的覆盖方法。

于 2013-03-04T13:11:22.523 回答