TypeScript总结:16、面向对象速查 面向对象速查TypeScript 面向对象部分可以归纳为四个关键词类、封装、继承和抽象。接口与泛型则进一步帮助我们描述结构和复用类型逻辑。一、类的基本模板classPerson{name:string;age:number;constructor(name:string,age:number){this.namename;this.ageage;}sayHello():void{console.log(大家好我是this.name);}}constpersonnewPerson(孙悟空,18);person.sayHello();成员作用属性保存对象数据构造函数创建实例时初始化数据方法描述对象行为this表示当前实例new创建类的实例二、访问修饰符修饰符当前类子类类外部public可以访问可以访问可以访问protected可以访问可以访问不可以访问private可以访问不可以访问不可以访问示例classUser{publicname:string;protectedrole:string;privatepassword:string;constructor(name:string,role:string,password:string){this.namename;this.rolerole;this.passwordpassword;}}建议默认公开的成员才使用public。只允许子类使用的成员使用protected。内部实现细节使用private。三、readonly、getter 和 setterreadonlyclassUser{readonlyid:number;constructor(id:number){this.idid;}}readonly属性初始化后不能重新赋值。getter 和 setterclassPerson{private_name:string;constructor(name:string){this._namename;}getname():string{returnthis._name;}setname(value:string){if(value.trim()){this._namevalue;}}}记忆方式get读取属性。set修改属性。四、静态成员classMathTools{staticPI3.1415926;staticsum(a:number,b:number):number{returnab;}}console.log(MathTools.PI);console.log(MathTools.sum(1,2));静态成员属于类本身通过类名访问不需要创建实例。五、继承和方法重写classAnimal{constructor(publicname:string){}run():void{console.log(this.name正在跑);}}classDogextendsAnimal{bark():void{console.log(this.name在汪汪叫);}overriderun():void{console.log(狗正在跑);}}constdognewDog(旺财);dog.run();dog.bark();关键语法语法作用extends继承父类super(...)调用父类构造函数super.method()调用父类方法override明确表示重写父类成员六、抽象类abstractclassAnimal{abstractrun():void;bark():void{console.log(动物在叫);}}classDogextendsAnimal{run():void{console.log(狗在跑);}}抽象类的特点不能直接实例化。可以包含普通属性和普通方法。可以包含抽象方法。子类必须实现抽象方法。七、接口描述对象结构interfacePerson{name:string;sayHello():void;}functiongreet(person:Person):void{person.sayHello();}类实现接口classStudentimplementsPerson{constructor(publicname:string){}sayHello():void{console.log(我是this.name);}}implements只负责检查结构不会自动生成接口中的属性和方法。八、泛型泛型函数functionidentityT(value:T):T{returnvalue;}identity(100);identity(hello);泛型类classBoxT{constructor(publicvalue:T){}}constnumberBoxnewBox(100);conststringBoxnewBox(hello);泛型约束interfaceHasLength{length:number;}functiongetLengthTextendsHasLength(value:T):number{returnvalue.length;}九、接口、抽象类和普通类的区别类型主要作用能否包含具体实现能否直接实例化接口描述结构和契约不能不能抽象类提供通用模型和部分实现可以不能普通类创建具体对象可以可以十、面向对象设计建议类负责描述对象状态和行为。不要把所有属性都公开优先保护内部状态。父类放公共逻辑子类放具体差异。只需要约束结构时优先考虑接口。需要共享实现时再考虑抽象类或继承。重复的类型逻辑优先使用泛型。十一、本章小结类解决对象创建和行为组织问题。封装解决属性访问和数据保护问题。继承解决公共逻辑复用问题。抽象类解决通用模型和强制实现问题。接口解决结构约束问题。泛型解决类型安全的代码复用问题。

相关新闻

最新新闻

动物森友会存档编辑器 NHSE 使用指南:把 Switch 存档变成任你摆布的岛屿沙盘

动物森友会存档编辑器 NHSE 使用指南:把 Switch 存档变成任你摆布的岛屿沙盘

动物森友会存档编辑器 NHSE 使用指南:把 Switch 存档变成任你摆布的岛屿沙盘 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 如果你玩《集合啦!动物森友会》已经有一阵子&a…

2026/8/15 10:52:39
微信网页版插件安装全指南:5分钟让浏览器直接用上微信

微信网页版插件安装全指南:5分钟让浏览器直接用上微信

微信网页版插件安装全指南:5分钟让浏览器直接用上微信 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 下午六点零七分,陈晨的电…

2026/8/15 10:52:39
微信聊天记录导出实战:我用WeChatExporter把iPhone上的对话完整搬到了电脑

微信聊天记录导出实战:我用WeChatExporter把iPhone上的对话完整搬到了电脑

微信聊天记录导出实战:我用WeChatExporter把iPhone上的对话完整搬到了电脑 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 上个月给家里老人换手机&#xff0…

2026/8/15 10:52:39
安卓端YOLOv26无训练目标检测实战:从模型部署到特定对象识别

安卓端YOLOv26无训练目标检测实战:从模型部署到特定对象识别

在移动端实现实时目标检测一直是计算机视觉领域的挑战,尤其是将强大的YOLO系列模型部署到资源受限的安卓设备上。最近,YOLOv10和YOLOv11的讨论热度很高,但YOLOv26作为一个社区驱动的、极具探索性的项目,以其独特的“无训练识别”概…

2026/8/15 10:52:39
SMB与NFS文件共享协议详解及实践指南

SMB与NFS文件共享协议详解及实践指南

1. 文件共享协议基础概念 文件共享协议是计算机网络中实现不同设备间文件资源共享的核心技术手段。简单来说,它就像一套标准化的"语言规则",让Windows、Linux、macOS等不同操作系统的设备能够互相理解对方的文件访问请求。 在实际工作中&…

2026/8/15 10:52:39
从URL到安全分发:深入解析下载链接的设计原理与工程实践

从URL到安全分发:深入解析下载链接的设计原理与工程实践

1. 从“下载链接”说起:一个被忽视的互联网基石 今天想聊一个看似简单,但背后门道极深的话题——下载链接。你可能觉得这有什么好聊的?不就是一串网址,点一下就开始下载文件吗?确实,对于绝大多数普通用户来…

2026/8/15 10:47:39