JavaScript面向对象:类的继承

news2025/1/12 8:54:33

继承

 

现实中的继承:子承父业,比如我们都继承了父亲的姓。

程序中的继承:子类可以继承父类的一些属性和方法。

语法:

class Father{   // 父类
} 
class  Son extends Father {  // 子类继承父类
}       

实例:

class Father {
      constructor(surname) {
        this.surname= surname;
      }
      say() {
        console.log('你的姓是' + this.surname);

       }
}
class Son extends Father{  // 这样子类就继承了父类的属性和方法

}
var damao= new Son('刘');
damao.say();      

super 关键字

super 关键字用于访问和调用对象父类上的函数。可以调用父类的构造函数,也可以调用父类的普通函数

这样会报错,因为父类的this指向的是父亲自己 

语法:

class Person {   // 父类
      constructor(surname){
         this.surname = surname;
     }
} 
class  Student extends Person {       // 子类继承父类
     constructor(surname,firstname){
          super(surname);             // 调用父类的constructor(surname)
	this.firstname = firstname; // 定义子类独有的属性
     }
}       

 要先有super,才能使用this 

注意: 子类构造函数使用super, 必须放到 this 前面  (必须先调用父类的构造方法,在使用子类构造方法)

 就近原则 输出的还是孩子

   继承中的属性或者方法查找原则: 就近原则

        1. 继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类的

        2. 继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行父类的这个方法(就近原则)

 

 用super就可以调用父类的普通函数

 刚刚想到了为什么要用构造函数,就是如果不使用constructor(),就不知道this.x指向的是那个。使用了constructor,把里面的x传给了this.x,这样就可以使用里面的方法

  案例:

 class Father {
    constructor(surname) {
        this.surname = surname;
     }
    saySurname() {
      console.log('我的姓是' + this.surname);
    }
}
class Son extends Father { // 这样子类就继承了父类的属性和方法
    constructor(surname, fristname) {
         super(surname);   // 调用父类的constructor(surname)
         this.fristname = fristname;
     }
    sayFristname() {
         console.log("我的名字是:" + this.fristname);

    }
}
var damao = new Son('刘', "德华");
damao.saySurname();
damao.sayFristname();      

super关键字 用于访问和调用对象父类上的函数。可以调用父类的构造函数,也可以调用父类的普通函数

语法

class Father {
     say() {
         return '我是爸爸';

     }
}
class Son extends Father { // 这样子类就继承了父类的属性和方法
     say() {
          // super.say()  super 调用父类的方法
          return super.say() + '的儿子';
     }
}
var damao = new Son();
console.log(damao.say());       

三个注意点:

1. ES6 类没有变量提升,所以必须先定义类,才能通过类实例化对象.

2.类里面的共有属性和方法一定要加this使用.

3.里面的this指向问题.

4.constructor 里面的this指向实例对象, 方法里面的this 指向这个方法的调用者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教你开通小程序流量主

手把手教你开通小程序流量主 开通条件是累计独立访客不低于 1000。也就是1000级以上,其实这个不难。 接下来以防火安全知识专项学习与竞答为例,写一篇开通流量主、创建广告和代码嵌入的图文教程。 功能介绍 广告展示位置灵活控制,接入简单…

操作系统复习【面试】

操作系统复习【面试】前言推荐操作系统复习第一章 操作系统引论 11.3 操作系统的基本特性 141.3.1 并发1.3.2 共享1.3.3 虚拟1.3.4 异步1.4 操作系统的主要功能 171.4.1 处理机管理功能1.4.2 存储器管理功能1.4.3 设备管理功能1.4.4 文件管理功能1.4.5 操作系统和用户之间的接口…

目标管理利器OKR-给被各大APP抢占使用时长的你

今天聊聊好用的时间和目标管理利器OKR,给被各大APP抢占使用时长的你。 1、海龟的秘密 一个游泳健将,他发现自己竟然游不过一只海龟,这让他疲惫不堪,又失望,又难堪。 然后他又去不断观察,终于发现了海龟游…

数据结构之队列

文章目录前言一、队列二、队列应该如何实现顺序表or链表扩展了解三、队列的实现1.队列的声明2.接口(声明)3.接口的实现创建一个新的节点判断队列为空队头元素入队出队销毁队列注意:4.主函数(测试)四、相关习题总结前言…

【C++基础】友元

友元 定义:类的特点是私有成员无法在作用域外访问,而友元函数是特权函数,允许访问私有成员。 语法:在函数或类前加friend。 例子:在message中,published每个人都可访问,secret只有自己可以访问…

开放经济中的货币-中国视角下的宏观经济

开放经济中的货币 – 潘登同学的宏观经济学笔记 文章目录开放经济中的货币 -- 潘登同学的宏观经济学笔记汇率:复习外汇冲销下的可能三角中国的811汇改国际货币体系的现在与未来当前国际货币体系存在三个主要问题体系具有内生不稳定性美元的中心地位带来了不平等非对…

[附源码]java毕业设计校园博客系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

树莓派快速上手-远程调试图形界面

0 简述 前面的文章里介绍过通过ssh在局域网或者远程访问树莓派,一般而言,对于非图形界面的开发仅通过ssh命令行交互就能够完成的,但是要开发图形界面展示或交互的应用时,光命令行交互的方式就远远不够了。这篇文章将针对树莓派这…

Conformer测试问题

https://github.com/pengzhiliang/Conformer 抽空测试了conformer,训练起来很简单,但是会遇到一个问题: Loss is nan, stopping training 我用的默认配置,不知道为什么会有这个问题,知道的来探讨下。 1.数据准备 我…

华为机试 - 最长连续子序列

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 有N个正整数组成的一个序列。给定整数sum,求长度最长的连续子序列,使他们的和等于sum,返回此子序列的长度, 如果没有满足要求的序列,返回-1…

【Hack The Box】Linux练习-- Mirai

HTB 学习笔记 【Hack The Box】Linux练习-- Mirai 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月17日🌴 &#x1f36…

元宇宙技术在几年后质变,迎来体验终端世界

京东集团高级副总裁、京东探索研究院院长陶大程京东集团高级副总裁、京东探索研究院院长陶大程是京东“产业元宇宙”的提出者和构建者。他谈到,希望通过构建元宇宙供应链降低实体经济参与数字经济的门槛,帮助实体经济完成数实融合的商业转型,…

设计模式复习题

1.选择题 1.在观察者模式中,表述错误的是(C )C.观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行。 2.对于违反里式代换原则的两个类,可以采用的候选解决方案错误的是: ( D )D.以上方…

斗鱼发布Q3财报:连续三个季度收入下滑,市值年初至今缩水五成

11月21日,斗鱼(NASDAQ:DOYU)发布2022年第三季度财务报告。 财报显示,斗鱼2022年第三季度的营收为17.98亿元,同比减少23.4%;净亏损660万元,2021年同期为亏损1.435亿元;调整后净利润为…

面向对象编程·上

面向对象编程上1.包1.1导入包中的类1.2静态导入1.3将类放到包中1.4包的访问权限控制 - [只能在当前包当中使用]1.5常见的系统包2.继承2.1背景2.2语法规则2.2.1super[不能出现在静态方法当中]作用总结 父类对象的引用2.3protected 关键字2.4更复杂的继承关系2.5final 关键字2.6组…

电容笔和触控笔有什么区别?值得入手电容笔品牌推荐

电容笔与传统的触控笔最大的不同之处是,电容笔具有良好的防误触和倾斜压感,能有效地降低书写过程中的麻烦。如果我们想要 IPAD和电容笔一起很好地使用,而且我们就没有过多的预算的话。那么,这款平替电容笔,就是最好的选…

看懂这篇文章-你就懂了数据库死锁产生的场景和解决方法

一、什么是死锁 加锁(Locking)是数据库在并发访问时保证数据一致性和完整性的主要机制。任何事务都需要获得相应对象上的锁才能访问数据,读取数据的事务通常只需要获得读锁(共享锁),修改数据的事务需要获得…

京东神灯文档:JVM参数GC线程数ParallelGCThreads合理性设置

目录 1. ParallelGCThreads参数含义 2. ParallelGCThreads参数设置 3. ParallelGCThreads参数实验 4. ParallelGCThreads扫描结果 5. ParallelGCThreads修改建议 1. ParallelGCThreads参数含义 在讲这个参数之前,先谈谈JVM垃圾回收(GC)算法的两个优化标的&…

ERP (SAP) Integrator Delphi Edition

ERP (SAP) Integrator Delphi Edition ERP(SAP)Integrator支持RFC和SAP服务,并允许开发人员轻松编写桌面、服务器和移动应用程序。它提供了一种连接到SAP R/3和NetWeaver系统的简单方法,并使应用程序能够进行远程功能调用,以便向这些远程功能…

SQL Server 卸载和安装

在莫不知名链接下载sql失败了,然就几天变化,让我从sql Server2019到2022了, 首先讲一下卸载吧,很简单一共就5步, 先停止服务,有关sql server的相关服务全部停止,再进入控制面板 > 卸载程序…