ts:用加减乘除方法配合展示类的继承(extends)

ts:用加减乘除方法配合展示类的继承(extends)

  • 1 主要内容说明
  • 2 例子
    • 2.1 基类的创建
      • 2.1.1 源码1 (基类的创建)
      • 2.1.2 源码1运行效果
    • 2.2 继承基类的参数和方法
      • 2.2.1 源码2(继承基类的参数和方法)
      • 2.2.2 源码2运行效果
    • 2.3 继承基类,添加新方法
      • 2.3.1 源码3(继承基类,添加新方法)
      • 2.3.2 源码3运行效果
    • 2.4 继承基类,添加新参数、方法
      • 2.4.1 源码4(继承基类,添加新参数、方法)
      • 2.4.2 源码6运行效果
  • 3.结语
  • 4.定位日期

1 主要内容说明

类的继承,使用关键字extends继承。子类继承父类,子类可以继承父类的参数和方法,同时添加新的参数和方法。对于一个项目,原本有一些简单的功能,但根据市场发展的需要,需要对项目更新迭代,添加更多的参数和方法,实现更多的功能,并且原项目数据和方法部分需要保留,这时候就可以使用类的继承来开发新方法和功能。对于子类,类中的构造函数使用super关键字继承父类的参数,继承后就可以使用父类的参数。方法的继承格式为,在子类方法中设置super.way_FL(),便可继承父类方法,其中way_FL为父类中的方法。

2 例子

  • 本文选了一个简单的例子,来展示继承的类从简到繁的过程。下边源码1为简单的创建的一个类Calculate,里面设置两参数,只有两参数相加的加法功能。
  • 源码2,类名为Count_1,继承了父类源码1的Calculate类的参数和方法。此时我们函数实例化,使用的是方法way2,而使用效果为继承了父类way1的加法功能。
  • 源码3,类名为Count_2,在继承了父类源码1的Calculate类的参数和方法的同时,使用参数,增加减法、乘法、除法的功能。加法则继承于父类。
  • 源码4,类名为Count_3,继承父类源码3的Count_2类,继承了两数的加减乘除方法。在原有继承上,添加一新参数c,用于实现三数的加减乘除方法。

2.1 基类的创建

简单的创建的一个类Calculate,里面设置两参数,只有两参数相加的加法功能way1。

2.1.1 源码1 (基类的创建)

class Calculate {a: number; // 第一个数字b: number; // 第二个数字constructor(a: number, b: number) {this.a = a; // 初始化第一个数字this.b = b; // 初始化第二个数字}way1(): string {return `${this.a} + ${this.b} = ${this.a + this.b}`; // 返回加法结果}
}// 测试 Calculate 类
let result = new Calculate(764, 467);
console.log(result.way1());

2.1.2 源码1运行效果

在这里插入图片描述

2.2 继承基类的参数和方法

新建Count_1类,继承了父类源码1的Calculate类的参数和方法。此时我们函数实例化,使用的是方法way2,效果为继承了父类way1的加法功能。子类中的构造函数部分,super(值1,值2),相当于初始化父类的值a=值1b=值2。若是值1和值2调换,则函数会根据输入的参数的顺序进行逻辑运算。如正常函数实例化输入参数为(11,5),逻辑运算为11+5,若继承时构造函数部分,调换位置,如 super(值2,值1)时,逻辑运算变为5+11。当然加法无影响,若是减法和除法,结果则会改变。

2.2.1 源码2(继承基类的参数和方法)

class Calculate {a: number; // 第一个数字b: number; // 第二个数字constructor(a: number, b: number) {this.a = a; // 初始化第一个数字this.b = b; // 初始化第二个数字}way1(): string {return `${this.a} + ${this.b} = ${this.a + this.b}`; // 返回加法结果}
}// 测试 Calculate 类
// let result = new Calculate(764, 467);
// console.log(result.way1());class Count_1 extends Calculate {constructor(a_1: number, b_1: number) {super(a_1, b_1); // 调用父类构造函数}way2(): string { // 继承加法return super.way1(); // 调用父类的加法方法}
}// 测试 Count_1 类
let result = new Count_1(764, 467);
console.log(result.way2());

2.2.2 源码2运行效果

在这里插入图片描述

2.3 继承基类,添加新方法

新建Count_2类,继承了父类源码1的Calculate类的参数和方法的同时,使用参数a和b,增加减法way4、乘法way5、除法way6的功能。加法way3则继承于父类way1。

  • 需要注意的是,除法的被除数不能为0。

2.3.1 源码3(继承基类,添加新方法)

class Calculate {a: number; // 第一个数字b: number; // 第二个数字constructor(a: number, b: number) {this.a = a; // 初始化第一个数字this.b = b; // 初始化第二个数字}way1(): string {return `${this.a} + ${this.b} = ${this.a + this.b}`; // 返回加法结果}
}// 测试 Calculate 类
// let result = new Calculate(764, 467);
// console.log(result.way1());class Count_2 extends Calculate {constructor(a_2: number, b_2: number) {super(a_2, b_2); // 调用父类构造函数}way3(): string { // 继承加法return super.way1(); // 调用父类的加法方法}// 添加其他方法way4(): string { // 减法return `${this.a} - ${this.b} = ${this.a - this.b}`; // 返回减法结果}way5(): string { // 乘法return `${this.a} * ${this.b} = ${this.a * this.b}`; // 返回乘法结果}way6(): string { // 除法if (this.b !== 0) {return `${this.a} / ${this.b} = ${this.a / this.b}`; // 返回除法结果} else {return "被除数不能为0!"; // 返回错误信息}}
}// 测试 Count_2 类
let result = new Count_2(764, 467);
console.log(result.way3());
console.log(result.way4());
console.log(result.way5());
console.log(result.way6());

2.3.2 源码3运行效果

在这里插入图片描述

2.4 继承基类,添加新参数、方法

源码3的Count_2类只是两数的加减乘除法,在下边源码4的Count_3类中,在原有源码3的两数加减乘除方法的基础上,添加一新参数c,用于增加实现三数的加减乘除法。

  • 需要注意的是,除法的被除数不能为0。

2.4.1 源码4(继承基类,添加新参数、方法)

class Calculate {a: number; // 第一个数字b: number; // 第二个数字constructor(a: number, b: number) {this.a = a; // 初始化第一个数字this.b = b; // 初始化第二个数字}way1(): string {return `${this.a} + ${this.b} = ${this.a + this.b}`; // 返回加法结果}
}class Count_2 extends Calculate {constructor(a_2: number, b_2: number) {super(a_2, b_2); // 调用父类构造函数}way3(): string { // 继承加法return super.way1(); // 调用父类的加法方法}// 添加其他方法way4(): string { // 减法return `${this.a} - ${this.b} = ${this.a - this.b}`; // 返回减法结果}way5(): string { // 乘法return `${this.a} * ${this.b} = ${this.a * this.b}`; // 返回乘法结果}way6(): string { // 除法if (this.b !== 0) {return `${this.a} / ${this.b} = ${this.a / this.b}`; // 返回除法结果} else {return "被除数不能为0!"; // 返回错误信息}}
}// 测试 Count_2 类
// let result = new Count_2(764, 467);
// console.log(result.way3());
// console.log(result.way4());
// console.log(result.way5());
// console.log(result.way6());class Count_3 extends Count_2 {c: number; // 第三个数字constructor(a_3: number, b_3: number, c_3?: number) {super(a_3, b_3); // 调用父类构造函数this.c = c_3; }way3_3(): string {if (this.c === undefined) {return super.way3(); // 如果 c 为 0,则调用父类的 way3} else {return `${this.a} + ${this.b} + ${this.c} = ${this.a + this.b + this.c}`; // 返回三数相加的结果}}way4_3(): string {if (this.c === undefined) {return super.way4(); // 如果 c 为 0,则调用父类的 way4} else {return `${this.a} - ${this.b} - ${this.c} = ${this.a - this.b - this.c}`; // 返回三数相减的结果}}way5_3(): string {if (this.c === undefined) {return super.way5(); // 如果 c 为 0,则调用父类的 way5} else {return `${this.a} * ${this.b} * ${this.c} = ${this.a * this.b * this.c}`; // 返回三数相乘的结果}}way6_3(): string {// 检查 c 是否未定义if (this.c === undefined) {return super.way6(); // 如果未定义,调用父类的 way6 方法进行除法计算} else {// 如果 c 已定义,则进一步检查其值if (this.c === 0) {return "被除数不能为0!"; // 如果 c 为 0,输出错误信息} else {// 如果 c 不为 0,进行三数相除的计算return `${this.a} / ${this.b} / ${this.c} = ${this.a / this.b / this.c}`;}}}}
// 测试 Count_3 类
let result1 = new Count_3(764, 467);
let result2 = new Count_3(764, 467, 76);console.log(result1.way3_3()); // 调用 way3_3
console.log(result1.way4_3()); // 调用 way4_3
console.log(result1.way5_3()); // 调用 way5_3
console.log(result1.way6_3()); // 调用 way6_3console.log(`\n分隔行-------------------------------\n`);console.log(result2.way3_3()); // 调用 way3_3
console.log(result2.way4_3()); // 调用 way4_3
console.log(result2.way5_3()); // 调用 way5_3
console.log(result2.way6_3()); // 调用 way6_3

2.4.2 源码6运行效果

在这里插入图片描述

3.结语

项目的开发是不是会有很多的框架示范类,其中包含着开发的参数和功能需求,我们需要在此基础上,拓展添加新参数和新功能。或者开发的项目,需要更新迭代,也是需要原有数据方法基础,开发新的方法和功能。
由于笔者的能力有限,创作的内容有所不足在所难免,也敬请读者包涵和指出,万分感谢!

4.定位日期

2024.11.3;
10:39;

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

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

相关文章

Java中的容器及其区别

|Collection |  ├List |  │-├LinkedList |  │-├ArrayList |  │-└Vector |  │ └Stack |  ├Set |  │├HashSet |  │├TreeSet |  │└LinkedSet | |Map   ├Hashtable   ├HashMap   └WeakHashMap 1、Java中的容器 Java容器类…

论文阅读- --DeepI2P:通过深度分类进行图像到点云配准

目前存在的问题: 单模态配准具有局限性,多模态研究很少跨模态图像到点云配准问题是求解相机坐标系与点云之间的旋转矩阵R ∈ SO(3)和平移向量t ∈ R3。 这个问题很困难,因为由于缺乏点到像素的对应关系,无法使用 ICP、PnP 和捆绑调…

Air780E如何发送SMS?一文详解!

今天一起来学习使用合宙低功耗4G模组Air780E发送SMS短消息: 一、SMS简介 SMS(短消息服务,ShortMessageService)功能主要用于在蜂窝网络中传输短消息。 在4G网络中,短信可以在数据传输的同时进行,不会因数…

Centos 7系统一键安装宝塔教程

服务器推荐青鸟云服务器,2H2G低至16元/月 官网地址: 所有产品_香港轻量云 2核 2G-A型_青鸟云 推荐Finalshell软件连接至服务器,下载地址: https://dl.hostbuf.com/finalshell3/finalshell_windows_x64.exe 下载完成后连接服务…

知识吾爱纯净版小程序系统 leibiao SQL注入漏洞复现(XVE-2024-30663)

0x01 产品简介 知识吾爱纯净版小程序系统是一款基于微信小程序平台开发的知识付费应用,旨在帮助用户快速建立自己的知识付费平台,实现支付变现和流量主收益。它提供了简洁明了的用户界面和良好的用户体验,同时注重用户隐私保护,确保用户信息的安全存储和传输。 0x02 漏洞…

HTML前端页面设计静态网站

浅浅分享一下前端作业&#xff0c;大佬轻喷~ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>一个网…

各大自媒体平台的感受 —— 小红书

如果你有些内容&#xff0c;想发布到自媒体平台上&#xff0c;目前有很多平台可用选择。 发布自媒体在获得关注的同时&#xff0c;同时也会期望有些收益。 我们的内容也发布了不少时间了&#xff0c;那就分别扒下各大自媒体平台的吃相&#xff0c;这篇文章说的是小红书。 收…

openEuler下配置openGauss环境图解

一、在openEuler中创建用户&#xff0c;并授予权限 # 创建用户 sudo adduser omm# 授予权限 chown omm /opt# 切换用户 su - omm 二、在openGauss官网找到openGauss极简版的软件包 openGauss软件 | openGauss下载 | openGauss软件包 | openGauss社区 右键立即下载&#xff0…

RabbitMQ 的集群

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ 的集群】面试题&#xff1f;希望对大家有帮助&#xff1b; RabbitMQ 的集群 RabbitMQ 是一种流行的开源消息代理&#xff0c;广泛用于构建分布式系统中的消息队列。随着应用程序规模的扩大&#xff0c;单一的 RabbitMQ 实…

[ 应急响应基础篇 ] Windows 写入任务计划程序详解--任务计划程序窗口写入 命令行写入

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

使用Git LFS管理大型文件

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Git LFS管理大型文件 引言 Git LFS 简介 安装 Git LFS 安装 Git 安装 Git LFS 配置 Git LFS 初始化 Git 仓库 指定需要使用…

【Clikhouse 探秘】ClickHouse 物化视图:加速大数据分析的新利器

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

【Android】Java开发语言规范

Java语言规范 命名风格 **类名&#xff1a;**使用 UpperCamelCase 风格&#xff0c;必须遵从驼峰形式&#xff0c;但以下情形例外&#xff1a;DO / BO / DTO / VO / AO&#xff0c;所有单词的首字母大写**方法名、参数名、成员变量、局部变量&#xff1a;**统一使用 lowerCam…

一些硬件知识【2024/11/2】

当需要提供功率型的输出信号的时候&#xff0c;可以在信号发生器外接功率放大器&#xff0c;这样可以提高输出功率 信号的调幅&#xff08;AM&#xff09;、调频&#xff08;FM&#xff09;与调相&#xff08;PM&#xff09;&#xff1a; 调制信号&#xff1a;控制高频振荡的低…

WPF自定义日历控件Calendar 的方法

推荐下载地址 https://www.haolizi.net/example/view_2107.html <UserControl.Resources><local1:DayConverter x:Key"DayConverter"/><!--导入转换器--><Style x:Key"CalendarStyle1"TargetType"{x:Type Calendar}">&…

Qt第三课 ----------输入类的控件属性

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

LabVIEW 离心泵机组故障诊断系统

开发了一套基于LabVIEW图形化编程语言设计的离心泵机组故障诊断系统。系统利用先进的数据采集技术和故障诊断方法&#xff0c;通过远程在线监测与分析&#xff0c;有效提升了离心泵的预测性维护能力&#xff0c;保证了石油化工生产的连续性和安全性。 项目背景及意义 离心泵作…

typescript的简介

简介 tsc npm install -g typescripttsc -v作用 检查类型和语法错误&#xff0c;提前纠错 ts的类型 如何穿件带有ts的vue工程 作用 常见类型 用法 编写一个ts文件 let username:string "John";let age:number 25;let isUpdated:boolean true;let data:any &q…

WPF+MVVM案例实战(二十)- 制作一个雷达辐射效果的按钮

文章目录 1、案例效果2、文件创建与代码实现1、创建文件2、图标资源文件3、源代码获取1、案例效果 2、文件创建与代码实现 1、创建文件 打开 Wpf_Examples 项目,在 Views 文件夹下创建窗体界面 RadarEffactWindow.xaml 。代码功能分两个部分完成,一个是样式,一个是动画。页…

​Java面试经典 150 题.P13. 罗马数字转整数(012)​

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public int romanToInt(String s) {int sum…