ES6对象(3):类的继承
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();
【结果】
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();
【结果】
3.类的冷知识
(1)用JS制作抽象类,抽象类一般是父类,不能通过该类直接创建对象(抽象的概念,比如人,动物,没办法直接创建人这个对象,因为它是一个抽象出来的概念)
(2)正常情况下,this始终指向具体的类的对象
ES6对象(3):类的继承相关推荐
- 实验四 类和对象;类的继承和派生;多态性; 接口;构造器应用
实验四 类和对象:类的继承和派生:多态性: 接口:构造器应用 一.实验目的 1. 掌握类与对象的关系: 2. 掌握类的定义: 3. 掌握对象的声明及使用: 4. 掌握构造方法的概念及调用时机: 5. ...
- java实验2 对象、类、继承、包
(1)声明位于包test.exam中Point类,有坐标x.y两个私有成员变量,有一个返回与其它点的距离的方法,还有一个移动点的方法 package com.qst.fuxi; public clas ...
- Python面向对象设计:对象与类,继承————以大鱼吃小鱼为例
前言 编写类时,并非总是要从空白开始.如果要编写的类是另一个现成类的特殊版本,可使用继承.一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类.子类继承了其父类 ...
- 实验四 类和对象; 类的继承和派生;多态性; 接口;构造器应用
一.实验目的 1 . 掌握类与对象的关系: 2 . 掌握类的定义: 3 . 掌握对象的声明及使用: 4 . 掌握构造方法的概念及调用时机: 5 . 掌握构造方法的重载: 6 . 掌握匿名对象的使用. ...
- Java实验四:类和对象;类的继承和派生;多态性; 接口;构造器应用
1. 编写一个应用程序,该程序中有 3 个类:Trangle.Leder 和Circle,分别用来刻画"三角形"."梯形"和"圆形". 要 ...
- 详解JavaScript中ES5和ES6的类、继承之间区别和联系
导读: 很多JavaScript的初学者(比如说我)在刚开始学习这门语言的时候,往往会对函数.对象.类.继承这些概念感到迷茫和疑惑,感觉他们彼此之间长得十分相似,这就导致很难分清他们什么时候该怎么用. ...
- ES6学习笔记(二):教你玩转类的继承和类的对象
文章目录 继承 super关键字 ES6中的类和对象的4个注意点: 总结 继承 程序中的继承: 子类可以继承父类的一些属性和方法 class Father { //父类constructor () { ...
- 1~22(面向编程+ES6中的类和对象+类的继承+面向对象版tab栏切换)
1 面向对象编程介绍 1.1 两大编程思想 面向过程 面向对象 1.2 面向过程编程POP(Process-oriented programming) 面向过程就是分析出解决问题所需要的步骤,然后用函 ...
- JS高级之ES6类与对象、静态成员、类的继承
一.类与对象 什么是类? 好比:人类.动物类 就是一个群体的统称 类里描述这一类群体,有哪些特征和行为,所谓的特征对应到代码中就是属性,行为对应到代码中就是方法 类理解为是一套描述数据的模板,但是没有 ...
- 33 ES6中的类和对象
技术交流QQ群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder的程序人生 1.面向对象 面向对象的思维特点: a.抽取(抽象)对象共有的属性和行为组织(封装)成一个 ...
最新文章
- Javascript事件模型系列(二)事件的捕获-冒泡机制及事件委托机制
- 【WPF】MVVM模式的3种command
- bzoj 1069 [SCOI2007]最大土地面积——旋转卡壳
- 把tensor转为numpy_如何在TensorFlow中将张量转换为numpy数组?
- 冬日稻城亚丁,美得一塌糊涂!
- fmdb和mysql的区别_FMDB
- LeetCode MySQL 1322. 广告效果
- pythonsql注入_python使用mysql,sql注入问题
- RAC环境创建本地数据文件的解决方法
- Java中IO流知识点总结
- MySQL-快速入门(11)用户管理
- 算法设计与分析第二章习题解答与学习指导(第2版)屈婉婷 刘田 张立昂 王捍贫编著 清华大学出版社
- 全球最大的同性交友网站,竟然还有这些骚操作
- x210ii开发板使用fastboot下载出现没有权限的问题
- HBase入门: 简介、特点、优缺点、数据结构、系统架构、入门操作、适用场景、注意事项与遇到的坑
- 安卓、苹果app_小程序——电商系统(开源免费)
- 使用Teleport Ultra批量克隆网站,使用Easy CHM合并生成chm文件
- 程序员进阶之排错和避坑方法GitChat将要出炉
- COMP252, Winter 2022. Jan 13, 2022. Due Jan 20, 2022, 4pm.
- 2021年2月社招面经分享_Java资深/高级开发