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许可协议。转载请注明来自 肥林の仓库