JavaScript--------继承

1. 现在需要定义一个新的类来代表学生:

①每一个学生都属于一个特定的年级。

②学生有名字,自我介绍。

2. 因此,我们可以将学生类的定义写成:

class Student
    properties
        name
        year
    constructor
        Student(name, year)
    methods
        introduceSelf()

 如果我们可以用某种特别的方式共享教授和学生中相同属性的声明,那么这会节省我们不少的精力。更准确的说,在某种层级上,二者实际上是同种事物,他们能够具有相同的属性也是合理的。继承(Inheritance)可以帮助我们完成这一操作。

3. 很容易注意到教授和学生都是人,而人是具有姓名,并且可以介绍自己的。我们可以将人定义为一个新类,即 Person 类,在 Person 类中,我们可以定义所有作为人的通用属性。接下来,我们可以定义 Professor 类和 Student 类由 Person 类派生(derive)而来,在伪代码中定义如下:

class Person
    properties
        name
    constructor
        Person(name)
    methods
        introduceSelf()

class Professor : extends Person
    properties
        teaches
    constructor
        Professor(name, teaches)
    methods
        grade(paper)
        introduceSelf()

class Student : extends Person
    properties
        year
    constructor
        Student(name, year)
    methods
        introduceSelf()

①称 Person 类是 Professor 类和 Student 类的超类(superclass)或父类(parent class)。反之,我们称 Professor 类和 Student 类是 Person 类的子类(subclass 或 child class)。

②三个类中都定义了 introduceSelf() 方法。因为尽管所有人都想要介绍他们自己,但是他们可能会以不同的方式去做这件事。

walsh = new Professor("沃尔什", "心理学");
walsh.introduceSelf(); // '我是沃尔什,我是你们的心理学老师。'

summers = new Student("萨摩斯", 1);
summers.introduceSelf(); // '我是萨摩斯,我是一年级的学生。'

③为不是教授或学生的人设定一个默认的打招呼方式:

pratt = new Person("普拉特");
pratt.introduceSelf(); // '我是普拉特。'

4. 当一个方法拥有相同的函数名,但是在不同的类中可以具有不同的实现时,我们称这一特性为多态(polymorphism)。

当一个方法在子类中替换了父类中的实现时,我们称之为子类重写/重载(override)了父类中的实现。 

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值