第十九章 类的继承

这篇具有很好参考价值的文章主要介绍了第十九章 类的继承。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、继承

  1. 面向对象三大特点:封装,继承,多态
    • 封装:打包
    • 继承:一个对象A不具有某个功能a,通过某种方式使用了对象B的a功能 的过程
    • 多态:对象或功能的多种形态,在使用某个对象时,不关心从哪来,在封装某个对象时,不关心将要在哪被使用
  2. 继承
    • 构造函数执行之后得到的实例,继承了原型身上的方法(实例继承了类的原型)
    • 类与类之间的继承
  3. 继承方式
    • 构造函数继承(改变this指向继承)
      • call,apply,bind
      • 简单方便易操作
      • 非常易于做多继承
      • 只能继承构造函数内的属性或方法,不能继承原型身上的属性或方法
    • 原型对象继承
      • 其实就是在拷贝原型对象,同时注意深浅拷贝
      • 只能继承原型对象上的属性或方法,不能继承构造函数内的属性或方法
      • 可以实现多继承
    • 原型链继承
      • 既能继承构造函数内的属性或方法,又能继承原型上的属性或方法
      • 但是不方便处理参数
      • 不适合多继承
    • 混合(组合)继承
      • 构造函数+原型对象
      • 构造函数+原型链
      • 集合了各种方式的优点
    • ES6新增的class的继承
      • 语法层面上的继承
      • 父类是子类的超类
      • 原理:构造函数+原型继承

二、原型

  1. 隐式原型对象:__proto__,一般存在于对象身上,用于指向创建该对象的构造函数的prototype
  2. 显示原型对象:prototype,只存在于函数身上(除了箭头函数),用来被通过自身创建的对象的__proto__指向。
  3. 隐式原型的使用规则:
    • 每个对象都有__proto__,对象每次在使用属性或方法时,如果自身不存在,都会沿着__proto__的指向,依次查找,直到Object.prototype
    • 一个构造函数可以创建多个实例,如果给构造函数的prototype添加方法或属性,将来的每个实例都可以访问,达到节省内存的效果
    • 构造函数的prototype类似于将来所有实例的公共空间,提供公共方法,被实例使用
  4. 补充:构造函数的prototype自带了一个constructor的属性,用来标记当前prototype对象所属的函数

三、原型和实例关系的检测

  1. 关键字:instanceof
    • 语法:实例 instanceof 构造函数
  2. 显式原型对象的方法:isPrototypeOf()
    • 语法:构造函数.prototype.isPrototypeOf(实例)
  3. 有关系,无论多少层,都返回true,否则返回false
  4. 小技巧:可以利用该关系检测方式区分对象,数组

文章来源地址https://www.toymoban.com/news/detail-791242.html

到了这里,关于第十九章 类的继承的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Vue3 第十九章】插槽 slot

    数字化管理平台 Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus 权限系统-商城 个人博客地址 在某些场景中,我们可能想要为子组件传递一些模板片段,让子组件在它们的组件中渲染这些片段。这就用到了插槽。 插槽是子组件中的提供给父组件使用的一个占位符,用 slot 表示,父组件可以

    2024年02月09日
    浏览(38)
  • 信安软考 第十九章 操作系统安全保护

    一、操作系统安全概述 1.1 操作系统安全概念与需求 操作系统(operating system),以下都简称OS 操作系统 负责计算机系统的资源管理,支撑和控制各种应用程序运行,为用户提供计算机系统管理接口 。操作系统是构成信息网络系统的核心关键组件,其安全可靠程度决定了计算

    2024年02月06日
    浏览(40)
  • 【Rust】Rust学习 第十九章高级特征

    现在我们已经学习了 Rust 编程语言中最常用的部分。在第二十章开始另一个新项目之前,让我们聊聊一些总有一天你会遇上的部分内容。你可以将本章作为不经意间遇到未知的内容时的参考。本章将要学习的功能在一些非常特定的场景下很有用处。虽然很少会碰到它们,我们

    2024年02月11日
    浏览(43)
  • 【Linux命令行与Shell脚本编程】第十九章 正则表达式

    正则表达式基础 定义BRE模式 扩展正则表达式 在sed和gawk中创建正则表达式,以得到所需的数据。 正则表达式是一种可供Linux工具过滤文本的自定义模板,使用元字符来描述数据流中的一个或多个字符. Linux工具(比如sed或gawk)会在读取数据时使用正则表达式对数据进行模式匹配

    2024年02月13日
    浏览(55)
  • TCP/IP网络编程 第十九章:Windows平台下线程的使用

    要想掌握Windows平台下的线程,应首先理解“内核对象”(Kernel Objects)的概念。如果仅介绍Windows平台下的线程使用技巧,则可以省略相对陌生的内核对象相关内容。但这并不能使各位深入理解Windows平台下的线程。 内核对象的定义 操作系统创建的资源有很多种,如进程、线程

    2024年02月16日
    浏览(51)
  • Hotspot源码解析-第十九章-ClassLoaderData、符号表、字符串表的初始化

    讲解本章先从一张图开始 众所周知,Java类的相关信息都是存储在元空间中的,但是是怎么存储的,相信很多读者是不清楚的,这里就不得不涉及到ClassLoaderDataGraph、classLoader、classLoaderData(简称CLD)和Klass的概念及他们四者的关系,这里简单描述下他们的概念,具体细节放到

    2024年01月17日
    浏览(47)
  • 第十九章 调用Callout Library函数 - 将 $ZF(-5) 与多个库和许多函数调用一起使用

    对 $ZF(-4,1) 的调用将标注库 inputlibrary.dll 和 outputlibrary.dll 加载到虚拟内存中,并为其返回系统定义的库 ID 。 对 $ZF(-4,3) 的调用使用库 ID 和函数名称来获取库函数的 ID 。返回的函数 ID 实际上是 ZFEntry 表序列号(请参阅上一章中的“创建 ZFEntry 表”)。 第一个循环使用 $ZF(-5

    2024年01月16日
    浏览(41)
  • 【从零开始学习JAVA | 三十九篇】深入多线程

    目录 前言:         ​1.线程的寿命周期​ 2.线程的安全问题 3.锁 同步代码块: 同步方法: 死锁: 4.生产者和消费者模式(等待唤醒机制) 总结:         当今软件开发领域中,多线程编程已成为一项至关重要的技能。然而,要编写出高效、可靠的多线程程序并不容

    2024年02月13日
    浏览(57)
  • 九五从零开始的运维之路(其十九)

    本篇将简述的内容:Linux系统下的Tomcat基础 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 Tomcat虚拟主机是通过linux或windows操作系统下进行独立运行的

    2024年02月10日
    浏览(36)
  • 【从零开始学习JAVA | 第二十九篇】Stream流

    目录 前言: Stram流: 设计目标: 使用步骤: 1.先得到一条Stream流,并把数据放上去。 2.利用Stream流中的各种API进行操作。 使用Stream流的注意事项: 总结:         本文我们将学习Stream流,他就像流水线一样,可以对我们要处理的对象进行逐步处理,最终达到我们想要的效果

    2024年02月17日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包