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,一经查实,立即删除!

相关文章

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

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

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

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

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 执行…

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

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

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

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

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

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

前后端联调

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中…

OpenHarmony 关闭息屏方式总结

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

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

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

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

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

Android textView 显示: STRING_TOO_LARGE

在Android中&#xff0c;字符串资源的长度限制是32KB&#xff0c;getString()方法返回的字符串资源的大小超过这个限制&#xff0c;就会抛出STRING_TOO_LARGE 这个错误。 我本地的临界值是&#xff1a;32.3 KB (33,090 字节) 小于等于33090时&#xff0c;能正常显示&#xff…

基于OpenSSL和nginx搭建本地https服务器(详细实操版)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

腾讯云最新优惠券领取入口,总面值2000元代金券,新用户、老用户、企业用户均可领取!

腾讯云推出年末感恩回馈活动&#xff0c;新老用户可免费领取总面值2000元的代金券礼包&#xff0c;适用于多种预付费产品&#xff0c;最高可抵扣36个月订单&#xff0c;领取后30天内有效。 领取入口&#xff1a; https://curl.qcloud.com/UpmL4ho3 领取说明&#xff1a; 腾…

git push 报错 error: src refspec master does not match any 解决

git报错 ➜ *** git:(main) git push -u origin "master" error: src refspec master does not match any error: failed to push some refs to https://gitee.com/***/***.git最新版的仓库初始化后 git 主分支变成了 main 方法 1.把 git 默认分支名改回 master …

VSCode搭建STM32开发环境

1、下载安装文件 链接&#xff1a;https://pan.baidu.com/s/1WnpDTgYBobiZaXh80pn5FQ 2、安装VSCodeUserSetup-x64-1.78.2.exe软件 3、 在VSCode中安装必要的插件 3、配置Keil Assistant插件 4、在环境变量中部署mingw64编译环境

Git的介绍和下载安装

Git的介绍和下载安装 概述 Git是一个分布式版本控制工具, 通常用来管理项目中的源代码文件(Java类、xml文件、html页面等)进行管理,在软件开发过程中被广泛使用 Git可以记录文件修改的历史记录并形成备份从而实现代码回溯, 版本切换, 多人协作, 远程备份的功能Git具有廉价的…

USB Type-C的基本原理

1 USB Type-C的基本原理 1.1 基本特性 Figure 1-1 USB Type-C接头外形 USB Type-C&#xff08;简称USB-C&#xff09;的基本特性&#xff1a; 1. 接口插座的尺寸与原来的Micro-USB规格一样小&#xff0c;约为8.3mm X 2.5mm 2. 可承受1万次反复插拔 3. 支持正反均可插入的“正反…

知虾平台丨优化Shopee店铺运营,提升销售利润——了解知虾平台

在如今竞争激烈的电商市场中&#xff0c;Shopee作为一家快速发展的平台&#xff0c;吸引了众多卖家加入。然而&#xff0c;要在Shopee上取得成功并实现可观的销售利润&#xff0c;并不是一件容易的事情。为了帮助卖家更好地了解市场趋势、优化商品关键词、监控竞争对手等&#…

上海毅速:深挖模具领域 成为行业变革者

近年来&#xff0c;3D打印在模具行业取得了大量的应用和拓展&#xff0c;越来越多的产品开始选择3D打印或者使用3D打印模具来进行制造。经过不断的发展&#xff0c;上海毅速副总王利军发现3D打印需要好的材料、好的工艺&#xff0c;同时也离不开好的装备平台。 在接受南极熊采访…