JS++ 继承

JS++ 继承

到目前为止,我们唯一定义的动物类型是猫(通过’猫’类)。我们的’猫’类还要求我们为我们的猫咪命名。最后,我们的’猫’类执行对网页的渲染。然而,如果我们想引入其他动物呢?我们应该如何实现狗、熊猫和犀牛?

虽然简单的答案是,我们可以直接从Cat.jspp复制、粘贴和修改我们的代码到Dog.jspp、Panda.jspp和Rhino.jspp,但这通常不是好的编程。相反,我们可能会注意到设计中有很多重复的地方,所有的动物都需要一个名字,所有的动物都需要渲染到我们的网页上,所有的动物都可以被归类在一起。因此,我们可以为一般的动物定义我们所需要的行为(如渲染到网页上),并让我们所有的动物类 “继承 “这种共同的行为。此外,有些动物可能不需要名字;例如,像猫和狗这样的驯养动物可能需要名字,但我们可能不想给我们的大熊猫和犀牛命名。

首先,让我们从检查Cat.jspp开始。Cat.jspp中的哪些数据或行为应该是所有动物都有的?

从我们到目前为止所定义的内容来看,应该只有render()方法。我们将以此作为理解继承的基础。早些时候,我们创建了一个Animal.jspp文件。它目前是空的,所以打开它,让我们定义一个 “动物 “类。

external ;

module Animals
{
    class Animal
    {
        varelement = (
            """
            <div class="animal">
                <i class="icofont icofont-animal-cat"></i>
            </div>
            """
        );

        void render() {("#content").append($element);
        }
    }
}

这作为一个基本的模板,效果很好。然而,敏锐的观察者会注意到我们有一个问题:$element字段将始终呈现一个猫的图标。我们稍后再讨论这个问题,但是,首先,让我们改变Cat.jspp,使其继承于我们新的 “动物 “类。

external $;

module Animals
{
    class Cat : Animal
    {
        string _name;

        Cat(string name) {
            _name = name;
        }
    }
}

我们从Cat.jspp中删除了$element字段和render()方法,我们在类声明中添加了这个。

class Cat : Animal

冒号语法指定了继承关系。在本例中,我们的 “猫 “类继承于 “动物 “类。换句话说,我们的’猫’类扩展了’动物’类;所有属于’动物’类的东西(字段、getters/setters、方法等)也都属于’猫’类。

在继承中,我们的’猫’类被称为’动物’的 “子类 “或 “衍生类”。动物 “可以被称为 “超类 “或 “基类”。

如果你现在试着编译你的代码,你仍然会看到猫被完全渲染到页面上,但是,如果你把鼠标悬停在任何一只猫身上,你将看不到它各自的名字。猫 “的render()方法现在是派生自 “动物 “类。由于我们的’动物’类不取名字(因为我们希望能够将该类泛化为野生动物,如熊猫和犀牛),它的render()方法同样也不会渲染HTML的’title’属性,以在鼠标移过时显示名字。然而,我们可以使这种行为成为可能。为了做到这一点,需要对访问修饰符进行解释,我们现在就来介绍一下。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程