ts学习05-typeScript中的类

类的定义

class Person {name: string; //属性  前面省略了public关键词constructor(n: string) {//构造函数   实例化类的时候触发的方法this.name = n;}run(): void {console.log(this.name);}
}
var p = new Person("张三");p.run();

在这里插入图片描述

class Person {name: string;//构造函数   实例化类的时候触发的方法constructor(name: string) {this.name = name;}getName(): string {return this.name;}setName(name: string): void {this.name = name;}
}
var p = new Person("张三");
console.log(p.getName());
p.setName("李四");
console.log(p.getName());

在这里插入图片描述

继承

class Person {name: string;constructor(name: string) {this.name = name;}run(): string {return `${this.name}在运动`;}
}
var p=new Person('王五');
console.log(p.run())class Web extends Person {constructor(name: string) {super(name); /*初始化父类的构造函数*/}
}var w = new Web("李四");
console.log(w.run());

在这里插入图片描述

ts中继承的探讨 父类的方法和子类的方法一致

class Person {name: string;constructor(name: string) {this.name = name;}run(): string {return `${this.name}在运动`;}
}
// var p=new Person('王五');
// alert(p.run())class Web extends Person {constructor(name: string) {super(name); /*初始化父类的构造函数*/}run(): string {return `${this.name}在运动-子类`;}work() {alert(`${this.name}在工作`);}
}var w = new Web("李四");
// alert(w.run());
// w.work();
console.log(w.run());

在这里插入图片描述

类里面的修饰符

  • public :公有 在当前类里面、 子类 、类外面都可以访问
  • protected:保护类型 在当前类里面、子类里面可以访问 ,在类外部没法访问
  • private :私有 在当前类里面可以访问,子类、类外部都没法访问
> 属性如果不加修饰符 默认就是 公有 (public)

public

在类里面、 子类 、类外面都可以访问

class Person {public name: string; /*公有属性*/constructor(name: string) {this.name = name;}run(): string {//内部访问return `${this.name}在运动`;}
}
class Student extends Person{constructor(name:string){super(name)}
}
var p = new Person("哈哈哈");
// 内部访问
console.log(p.run());
// 类外部访问公有属性;
console.log(p.name);
var s = new Student('里斯')
// 子类内部访问
console.log(s.run());
// 子类外部访问公有属性;
console.log(s.name);

在这里插入图片描述

protected

在类里面、子类里面可以访问 ,在类外部没法访问

class Person {protected name: string; /*公有属性*/constructor(name: string) {this.name = name;}run(): string {//内部访问return `${this.name}在运动`;}
}
class Student extends Person {constructor(name: string) {super(name);}run(): string {//内部访问return `${this.name}在运动`;}
}
var p = new Person("哈哈哈");
// 内部访问
console.log(p.run());
// 类外部访问公有属性;
console.log(p.name);
var s = new Student("里斯");
// 子类内部访问
console.log(s.run());
// 子类外部访问公有属性;
console.log(s.name);

在这里插入图片描述

private

在类里面可以访问,子类、类外部都没法访问

class Person {private name: string; /*公有属性*/constructor(name: string) {this.name = name;}run(): string {//内部访问return `${this.name}在运动`;}
}
class Student extends Person {constructor(name: string) {super(name);}run(): string {//内部访问return `${this.name}在运动`;}
}
var p = new Person("哈哈哈");
// 内部访问
console.log(p.run());
// 类外部访问公有属性;
console.log(p.name);
var s = new Student("里斯");
// 子类内部访问
console.log(s.run());
// 子类外部访问公有属性;
console.log(s.name);

在这里插入图片描述

静态属性 静态方法

class Per {public name: string;public age: number = 20;//静态属性static sex = "男";constructor(name: string) {this.name = name;}run() {/*实例方法*/alert(`${this.name}在运动`);}work() {alert(`${this.name}在工作`);}static print() {/*静态方法  里面没法直接调用类里面的属性*/console.log("print方法" + Per.sex);}
}// var p=new Per('张三');// p.run();Per.print();console.log(Per.sex);

在这里插入图片描述

多态

class Animal {name: string;constructor(name: string) {this.name = name;}eat() {//具体吃什么  不知道   ,  具体吃什么?继承它的子类去实现 ,每一个子类的表现不一样console.log("吃的方法");}
}class Dog extends Animal {constructor(name: string) {super(name);}//覆盖父类方法eat() {return this.name + "吃粮食";}
}class Cat extends Animal {constructor(name: string) {super(name);}//覆盖父类方法eat() {return this.name + "吃老鼠";}
}let dog = new Dog("小汪");
console.log(dog.eat());let cat = new Cat("小嗨");
console.log(cat.eat());

在这里插入图片描述

抽象类

typescript中的抽象类:它是提供其他类继承的基类,不能直接被实例化。用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。abstract抽象方法只能放在抽象类里面,抽象类和抽象方法用来定义标准 。 标准:Animal 这个类要求它的子类必须包含eat方法。

abstract class Animal {public name: string;constructor(name: string) {this.name = name;}abstract eat(): any; //抽象方法不包含具体实现并且必须在派生类中实现。run() {console.log("其他方法可以不实现");}
}
// var a=new Animal() /*错误的写法*/
class Dog extends Animal {//抽象类的子类必须实现抽象类里面的抽象方法constructor(name: any) {super(name);}eat() {console.log(this.name + "吃粮食");}
}var d = new Dog("小花花");
d.eat();class Cat extends Animal {//抽象类的子类必须实现抽象类里面的抽象方法constructor(name: any) {super(name);}run() {}eat() {console.log(this.name + "吃老鼠");}
}var c = new Cat("小花猫");
c.eat();

在这里插入图片描述

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

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

相关文章

zxing

引入依赖 <dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.google.zxing</groupId><artifactId>jav…

Vue学习笔记-命名路由

作用 简化路由的跳转,适合在路径过长的时候使用&#xff08;例如&#xff1a;path:/a/b/c/d/e/f/...&#xff09; 如何理解&#xff1a;相当于给路径起别名 使用方式 给路由命名 //创建一个路由器 const router new VueRouter({routes:[......{path:/home,component:HomeV…

JOSEF约瑟 剩余电流保护器 CLJ3-100A+LH30 导轨安装

CLJ3系列剩余电流动作继电器 系列型号&#xff1a; CLJ3-100A剩余电流动作继电器 CLJ3-250A剩余电流动作继电器 CLJ3-400A剩余电流动作继电器 CLJ3-630A剩余电流动作继电器 LH30剩余电流互感器 LH80剩余电流互感器 LH100剩余电流互感器 LH140剩余电流互感器 一、产品概…

特征融合12种经典魔改方案汇总,附配套模型和代码

特征融合&#xff08;Feature Fusion&#xff09;是深度学习中的一种重要技术&#xff0c;它可以帮助模型更好地理解数据的内在结构和规律&#xff0c;提高模型的性能和泛化能力。另外&#xff0c;特征融合还可以提高模型的分类准确率&#xff0c;减少过拟合风险&#xff0c;帮…

Java核心知识点整理大全25-笔记

目录 25. Hadoop 25.1.1. 概念 25.1.2. HDFS 25.1.2.1. Client 25.1.2.2. NameNode 25.1.2.3. Secondary NameNode 25.1.2.4. DataNode 25.1.3. MapReduce 25.1.3.1. Client 25.1.3.2. JobTracker 25.1.3.3. TaskTracker 25.1.3.4. Task 25.1.3.5. Reduce Task 执行…

主机安全-WindowsLinux的SSH安全加固

信息安全相关 - 建设篇 第三章 主机安全-Linux的SSH安全加固 信息安全相关 - 建设篇系列文章回顾下章内容主机安全-Linux的SSH安全加固前言Windows openssh相关命令&#xff0c;安装openssh获取openssh命令Windows openssl相关命令&#xff0c;安装Git获取openssl命令修复 CVE-…

CSS特效024:旋转的通透立方体

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧&#xff0c;主要包含CSS布局&#xff0c;CSS特效&#xff0c;CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点&#xff0c;CSS特效主要是一些动画示例&#xff0c;CSS花边是描述了一些CSS…

15分钟了解国外Lead广告联盟,为什么做国外广告联盟要用到指纹浏览器?

说到国外Lead广告联盟&#xff0c;可能很多人会问这是啥&#xff1f;其实呢&#xff0c;作为搞外贸的&#xff0c;如果你想增加你的收入&#xff0c;做国外广告联盟也是不错的选择&#xff0c;只要你有正确的方法和策略&#xff0c;就能够成功赚取丰厚的佣金。今天龙哥我就给大…

101.套接字-Socket网络编程3

目录 1.字节序 主机字节序&#xff08;小端&#xff09; 网络字节序&#xff08;大端&#xff09; 字节序转换函数 2.IP地址转换函数 3.套接字地址结构 通用 socket 地址结构 专用 socket 地址结构 Socket套接字的目的是将TCP/IP协议相关软件移植到UNIX类系统中。设计…

根文件系统简介

一. 根文件系统简介 根文件系统也叫做rootfs。大家学习STM32的W25Q256、SD卡的时候&#xff0c;接触过 FATFS文件系统。Rootfs是否 &#xff1f; FATFS。Rootfs文件系统不同于 FATFS。 Linux内核源码 /fs目录下就存放了类似FATFS系统的很多不同格式的文件系统。所以&#xf…

Python 运行脚本错误 OSError: [Errno 8] Exec Format Error

Python 中的 subprocess 模块允许您通过创建新进程来运行命令。 使用其方法运行 shell 脚本时&#xff0c;有时您可能会在 Linux 中遇到 OSError: [Errno 8] Exec format error。 当脚本直接运行而不是通过正确的解释器时&#xff0c;会引发 Exec 格式错误问题。 如果脚本文件…

前后端联调

JavaWenb开发 pom.xml 文件 配置 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://ma…

ROS2 Gazebo:三维物理仿真平台

介绍 Gazebo是ROS系统中最为常用的三维物理仿真平台&#xff0c;支持动力学引擎&#xff0c;可以实现高质量的图形渲染&#xff0c;不仅可以模拟机器人及周边环境&#xff0c;还可以加入摩擦力、弹性系数等物理属性。 比如我们要开发一个火星车&#xff0c;那就可以在Gazebo中…

Leetcode 2661. 找出叠涂元素

Leetcode 2661. 找出叠涂元素题目 给你一个下标从 0 开始的整数数组 arr 和一个 m x n 的整数 矩阵 mat 。arr 和 mat 都包含范围 [1&#xff0c;m * n] 内的 所有 整数。从下标 0 开始遍历 arr 中的每个下标 i &#xff0c;并将包含整数 arr[i] 的 mat 单元格涂色。请你找出 a…

OpenHarmony 关闭息屏方式总结

前言 OpenHarmony源码版本&#xff1a;4.0release 开发板&#xff1a;DAYU / rk3568 一、通过修改系统源码实现不息屏 修改目录&#xff1a;base/powermgr/power_manager/services/native/profile/power_mode_config.xml 通过文件中的提示可以知道DisplayOffTime表示息屏的…

用js手动写一个纵向滚动条

业务场景&#xff1a;由于通过css无法改动ios设备的滚动条样式&#xff0c;所以这里采取用js手动写一个纵向滚动条 功能&#xff1a;实现滚动的时候出现滚动条&#xff0c;停止滚动&#xff0c;滚动条消失&#xff0c;示例代码如下&#xff1a; <!DOCTYPE html> <ht…

STM32_CAN通讯波特率和采样点计算与设置

STM32_CAN通讯波特率设置 CAN参数计算与设置CAN时钟 STM32的 CAN外设位时序中只包含 3 段&#xff0c;分别是同步段 SYNC_SEG、位段BS1 及位段 BS2,采样点位于 BS1及BS2 段的交界处。 其中,SYNC_SEG段固定长度为 1T,可以在重新同步期间增长或缩短,该长度 SJW 也可在位时序寄存…

Ros2 bag数据包提取图片

项目地址&#xff1a; GitHub - cabinx/ros2_bag_to_image: Opens, reads, extracts and saves sensor_msgs/msg/Image or sensor_msgs/msg/CompressedImages from Ros2 bag, works on ros2 foxy. 做数据集需要从ros2的数据包中提取图片&#xff0c;在github找到了开源的项目…

MySQL的函数

<!DOCTYPE html> <html> <head> <meta charset"UTF-8" /> <title>mysql函数</title> </head> <body> <!-- Mysql函数 字符串函数 函数指的是一段可以直接被另一段程序调用的程序或代码 字符串函数 concat(s1…

什么是死锁?如何产生死锁?死锁的必要条件?怎么解决死锁?

🔒1、什么是死锁 死锁是一个非常让程序猿烦恼的问题,一旦所写的程序有了死锁,那么程序就无法执行下去,会出现严重的 bug,并且死锁非常隐蔽,我们不会轻易发现它,在开发阶段,不经意期间我们就会写出死锁,很难检测出来。 那么什么是死锁呢?竟然让我们如此烦恼。 “死…