当前位置: 首页 > news >正文

TypeScript开发基础(14)——面向对象之接口

接口,它是对行为的抽象,而具体如何行动需要由子类去实现,接口的意义在于抽象,不拘细节,从而使同类事物在在同一高度具有通用性及可替代性。 接口的特性: 不可以被实例化 含有声明但未实现的方法 一个类可以继承多个接口 子类必须实现其声明未实现的方法 所有成员都是默认Public的,因此接口中不能有Private成员 子类必须实现接口的所有成员。

1. 定义接口

interface 接口名 [ extends 接口1, 接口2 …] {

[属性...] [抽象函数...]

}

2. 接口的使用

(1)作为一种特殊类型使用。

例:定义一个用户接口。

interface IUser{ id:number; username:string; password:string; } let user1:IUser={ id:1001, username:"admin", password:"admin" }

(2)方法接口

接口中定义一些抽象方法,用来描述类的行为或能力。相关类通过关键字implements声明要实现接口时,必须具体化接口中所有的抽象方法。

interface IFly { fly(): void; } interface ISwim { swim(): void; } class Bird implements IFly { public fly(): void { console.log("bird is flying"); } } class Fish implements ISwim { public swim(): void { console.log("fish is swimming"); } } class Duck implements IFly, ISwim { public fly(): void { console.log("duck is flying"); } public swim(): void { console.log("duck is swimming"); } } let bird:Bird = new Bird(); bird.fly(); let fish:Fish = new Fish(); fish.swim(); let duck:Duck = new Duck(); duck.fly(); duck.swim();

3. 接口的继承

接口可以相互继承,这意味着你可以从一个接口继承属性和方法。接口允许多继承 ,实现接口时,继承的所有方法都得实现。

interface IPoint{ x:number; y:number; } interface IPoint3D extends IPoint{ z:number; } interface ICal{ getBmj():number;//求表面积 getTj():number;//求体积 } interface IBox extends IPoint3D,ICal{ length:number; width:number; height:number; } let point3d:IPoint3D={ x:1, y:2, z:3 } let box:IBox={ x:10, y:20, z:30, length:20, width:30, height:40, //求表面积方法实现 getBmj(){ return (this.length*this.width +this.length*this.height +this.width*this.height)*2; }, //求体积方法实现 getTj(){ return this.length*this.width*this.height; } }; console.log(point3d); console.log(box); console.log(box.getBmj()); console.log(box.getTj());
http://www.jsqmd.com/news/178310/

相关文章:

  • 欧姆龙NJ控制程序:功能宝藏与编程思路的跨平台应用
  • 清理系统Python环境中误操作安装的pip包(有风险)
  • Python 自动驾驶图像识别,车道线/交通标志/车辆检测全流程
  • 可商用的 Logo 生成 AI 软件推荐|真实对比 + 商用案例实操
  • 2025学到/加深记忆的一些比较浅的东西整理
  • AccessEnum 学习笔记(9.10):一键盘点“谁能访问什么”——文件/注册表权限体检与修复 - 教程
  • 探索十字型声子晶体案例:从原理到代码实现
  • 深度学习计算机毕设之基于机器学习的蘑菇毒性预测分析及应用实现
  • RabbitMQ消息序列化在大数据场景下的选择
  • MATLAB3的RPS并联机器人动力学仿真与运动学仿真控制:Simulink/Simscape的应用
  • 永磁同步电机转速环ADRC控制策略仿真研究:自抗扰控制技术的实践探索
  • ubuntu调整系统字体最简单的方法
  • 我的名字“智算菩萨”:一位信息时代的践行者与信仰者的双重叙事
  • 三相PWM逆变器闭环仿真:电压电流双闭环控制探索
  • 详细介绍:告别混编噩梦:Swift与Objective-C互操作完全指南
  • 【课程设计/毕业设计】基于机器学习的蘑菇毒性预测分析及应用实现
  • 遗传算法助力编码超表面 RCS 缩减:从理论到实践
  • Julia 基本运算符
  • 【数字信号去噪】改进的蜣螂算法优化变分模态分解IDBO-VMD数字信号去噪(优化K值 alpha值 综合指标 适应度函数包络熵)【含Matlab源码 14808期】
  • 京城信德斋电话 18910225062 - 品牌排行榜单
  • 解决关系难题的万能钥匙:课题分离
  • 采用Simulink工具进行步进电机位置闭环控制的仿真,并实现电机本体模块化搭建
  • JWT权限认证快速入门
  • 探索五相永磁同步电机在Simulink中的PI双闭环SVPWM矢量控制之旅
  • SQL MIN() 函数详解
  • 2025必备!专科生毕业论文写作TOP10 AI论文写作软件测评
  • 从对抗到合作:重建亲子沟通的底层逻辑
  • 2026马年新岁:拥抱智能时代,共谱科技华章
  • 当我的AI“学会”了与我交谈,我才明白声网与OpenAI合作的真正含义
  • PHP Cookie