1.继承的概念

如果两个类A和B,如果可以描述为:B是A(例如:猫是动物,轿车是汽车,男人是人),则A和B形成继承关系。如果B是A,则:

  • B继承自A
  • A派生B
  • B是A的子类
  • A是B的父类

如果A是B的父类,则B会自动拥有A中的所有实例成员

【例1】ES6之前的继承

function Animal(type, name, age, sex) {this.type = type;this.name = name;this.age = age;this.sex = sex;
}
Animal.prototype.print = function () {console.log(this);
}
function Dog(name, age, sex) {Animal.call(this, '犬类', name, age, sex)
}
Object.setPrototypeOf(Dog.prototype, Animal.prototype)
const dog = new Dog('旺财', 3, '公')
dog.print();

【结果】

图1

2.新的关键字

(1)extend:继承,用于类的定义

(2)super

  • 直接当函数调用,表示父类构造函数
  • 如果当对象使用,则表示父类的原型

【注】ES6要求,如果定义了constructor,并且该类是子类,则必须在constructor的第一行手动调用父类的构造函数;如果子类不写constructor,则会有默认的构造器,该构造器需要的参数与父类一致,并且自动调用父类构造器

【例2】

class Animal {constructor(type, name, age, sex) {this.type = type;this.name = name;this.age = age;this.sex = sex;}print() {console.log(`种类:${this.type}`);console.log(`名字:${this.name}`);console.log(`年龄:${this.age}`);console.log(`性别:${this.sex}`);}shout() {throw new Error('动物怎么叫的?');}
}
class Dog extends Animal {constructor(name, age, sex) {super('犬类', name, age, sex);//子类特有的属性this.love = '吃骨头';}print() {//调用父类的printsuper.print();//自己特有的代码console.log(`爱好:${this.love}`);}//同名方法会覆盖父类shout(){console.log('wangwang')}
}
const d = new Dog('旺财', 3, '公')
d.print();
console.log(d);
d.shout();

【结果】

图2

3.类的冷知识

(1)用JS制作抽象类,抽象类一般是父类,不能通过该类直接创建对象(抽象的概念,比如人,动物,没办法直接创建人这个对象,因为它是一个抽象出来的概念)

(2)正常情况下,this始终指向具体的类的对象

ES6对象(3):类的继承相关推荐

  1. 实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用

    实验四 类和对象:类的继承和派生:多态性: 接口:构造器应用 一.实验目的 1. 掌握类与对象的关系: 2. 掌握类的定义: 3. 掌握对象的声明及使用: 4. 掌握构造方法的概念及调用时机: 5. ...

  2. java实验2 对象、类、继承、包

    (1)声明位于包test.exam中Point类,有坐标x.y两个私有成员变量,有一个返回与其它点的距离的方法,还有一个移动点的方法 package com.qst.fuxi; public clas ...

  3. Python面向对象设计:对象与类,继承————以大鱼吃小鱼为例

    前言 编写类时,并非总是要从空白开始.如果要编写的类是另一个现成类的特殊版本,可使用继承.一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类.子类继承了其父类 ...

  4. 实验四 类和对象; 类的继承和派生;多态性; 接口;构造器应用

    一.实验目的 1 . 掌握类与对象的关系: 2 . 掌握类的定义: 3 . 掌握对象的声明及使用: 4 . 掌握构造方法的概念及调用时机: 5 . 掌握构造方法的重载: 6 . 掌握匿名对象的使用. ...

  5. Java实验四:类和对象;类的继承和派生;多态性; 接口;构造器应用

    1. 编写一个应用程序,该程序中有 3 个类:Trangle.Leder 和Circle,分别用来刻画"三角形"."梯形"和"圆形".  要 ...

  6. 详解JavaScript中ES5和ES6的类、继承之间区别和联系

    导读: 很多JavaScript的初学者(比如说我)在刚开始学习这门语言的时候,往往会对函数.对象.类.继承这些概念感到迷茫和疑惑,感觉他们彼此之间长得十分相似,这就导致很难分清他们什么时候该怎么用. ...

  7. ES6学习笔记(二):教你玩转类的继承和类的对象

    文章目录 继承 super关键字 ES6中的类和对象的4个注意点: 总结 继承 程序中的继承: 子类可以继承父类的一些属性和方法 class Father { //父类constructor () { ...

  8. 1~22(面向编程+ES6中的类和对象+类的继承+面向对象版tab栏切换)

    1 面向对象编程介绍 1.1 两大编程思想 面向过程 面向对象 1.2 面向过程编程POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤,然后用函 ...

  9. JS高级之ES6类与对象、静态成员、类的继承

    一.类与对象 什么是类? 好比:人类.动物类 就是一个群体的统称 类里描述这一类群体,有哪些特征和行为,所谓的特征对应到代码中就是属性,行为对应到代码中就是方法 类理解为是一套描述数据的模板,但是没有 ...

  10. 33 ES6中的类和对象

    技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.面向对象 面向对象的思维特点: a.抽取(抽象)对象共有的属性和行为组织(封装)成一个 ...

最新文章

  1. Javascript事件模型系列(二)事件的捕获-冒泡机制及事件委托机制
  2. 【WPF】MVVM模式的3种command
  3. bzoj 1069 [SCOI2007]最大土地面积——旋转卡壳
  4. 把tensor转为numpy_如何在TensorFlow中将张量转换为numpy数组?
  5. 冬日稻城亚丁,美得一塌糊涂!
  6. fmdb和mysql的区别_FMDB
  7. LeetCode MySQL 1322. 广告效果
  8. pythonsql注入_python使用mysql,sql注入问题
  9. RAC环境创建本地数据文件的解决方法
  10. Java中IO流知识点总结
  11. MySQL-快速入门(11)用户管理
  12. 算法设计与分析第二章习题解答与学习指导(第2版)屈婉婷 刘田 张立昂 王捍贫编著 清华大学出版社
  13. 全球最大的同性交友网站,竟然还有这些骚操作
  14. x210ii开发板使用fastboot下载出现没有权限的问题
  15. HBase入门: 简介、特点、优缺点、数据结构、系统架构、入门操作、适用场景、注意事项与遇到的坑
  16. 安卓、苹果app_小程序——电商系统(开源免费)
  17. 使用Teleport Ultra批量克隆网站,使用Easy CHM合并生成chm文件
  18. 程序员进阶之排错和避坑方法GitChat将要出炉
  19. COMP252, Winter 2022. Jan 13, 2022. Due Jan 20, 2022, 4pm.
  20. 2021年2月社招面经分享_Java资深/高级开发

热门文章

  1. C++ 析构函数设为虚函数的好处
  2. RTC 技术知识体系
  3. Simpleperf介绍
  4. 2020 JVM生态报告
  5. 记一次在LAMP中遇到的问题
  6. Hulu直播服务难点解析(二):系统设计与实现
  7. LiveVideoStackCon 2018推出学生优惠票
  8. 基于Flink的高可靠实时ETL系统
  9. saltstack与ansible对比
  10. IO虚拟化——Intel VT-d原理