Typescript学习笔记(7)-继承(2)-抽象类以及接口(interface)
抽象类以及接口(interface)
抽象类
- 我们一般不希望使用
父类来创造对象,因为父类的作用是专门被别的类继承的,因此就衍生出抽象类这一关键字了:abstract, 一般在class声明类之前添加这一关键字,如下所示:
/* ------- 抽象类 --------*/ |
抽象类和其他的类区别是不大的,只是不能用来创建实例对象,也就是说,抽象类是专门用来继承的类(专门用来当父类的)抽象类中可以添加抽象方法:抽象方法同样是使用abstract关键字开头,但是没有函数体抽象方法只能定义在抽象类中,且继承它的子类必须对该方法进行重写
/* ------- 抽象方法 --------*/ |
代码展示:
/* ------------------------- 抽象类 -------------------------------*/ |
接口(interface)
- 所谓的
接口其实就是一种用于定义一个类或者对象的结构的关键字,与type有点相似,不过type的用法更为广泛罢了 - 它的作用类似于抽象类,不同点在于
接口中的所有方法和属性都是没有实值的,换句话说接口中的所有方法都是抽象方法。接口主要负责定义一个类的结构,接口可以去限制一个对象的接口,对象只有包含接口中定义的所有属性和方法时才能匹配接口。同时,可以让一个类去实现接口,实现接口时类中要保护接口中的所有属性。 - 在Ts中,我们可以通过
type和interface的方式去定义类型,一般情况下通过interface接口的方法定义的类型都可以通过type去定义。注意type要添加等号。Interface定义类型不需要添加等号。
type的用法
/* -------- type -------- */ |
接口(interface)与type的相同点与不同点
相同点:
- 接口(
interface)和type都可以用于类型声明去使用,不过前者只能用于类或对象的声明
- 接口(
不同点:
- 接口(
interface)可以同时声明多个类或对象但使用一个变量名,结果则是将这些类或对象里面的属性叠加使用,但是type不能使用同一个属性名去声明多个变量 - 接口(
interface)在定义类时可以去限制类的结构,接口中所有的的属性都不能有实际值(不能赋值,只能定义属性),接口只定义对象的结构,不考虑实际值并且在接口中的所有方法都是抽象方法(这一点与抽象类中的抽象方法比较相像,但是抽象类中既可以有抽象方法,也可以有实际方法)
- 接口(
接口的基本使用
- 接口(
interface)可以向现有类型添加新字段,interface可以通过定义同名的方式去扩展字段,类型别名type是不能通过同名的方式去进行扩展的。
/* -------- 向现有的类型添加新字段 ------*/ |
Interface扩展接口:可以在interface后面添加关键字extends去扩展接口。类型别名type需要使用&符号去扩展接口
/* ---------- 扩展接口(inetrface) -----------*/ |
- 创建类去继承接口(
interface)时,需要使用implements关键字
/* |
- 函数类型接口
- 对方法传入的参数以及返回值进行约束
interface encrypt { |
- 可索引接口
- 对数组和对象的约束
// 数组的约束 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库




