在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。接口定义了某一批类所需要遵循的规范,接口不关心这些类的内部状态数据,也不关心这些类里的方法的实现细节,它只规定这批类里必须提供某些方法,提供某些方法,提供这些方法的类就可以满足实际需要。
通过 interface 关键字定义接口
- 属性类接口
对 json 的约束
interface 父类名{
子类必须属性a:数据类型;
子类必须属性b:数据类型;
}
function 子类名(参数类型:父类名){ }
调用
子类名({ 必须属性a和b })
-
上面这样调用的话小括号里只能有 子类必须属性a和b,不能有其他属性,而且a和b还要符合数据类型
-
可以在外部声明一个变量,然后给这个变量赋值给包含 子类必须属性a和b
属性值,然后再调用子类名的时候,直接传参这个变量名,这样就实现了还可以传其他属性的方法
- 函数类型接口
- 对方法传入的参数,以及返回值的约束
interface 父类名{
(必选参数a:类型,必选参数b:类型):返回值类型;
}
let 子类函数名:父类名 = function(必选参数a:类型,必选参数b:类型):返回值类型{
函数内容
}
调用
子类函数名(符合参数a和b的数据类型的值)
- 可索引接口
- 对数组,对象的约束
interface 父类名{
[index:索引号的数据类型]:约束的数据类型
}
let 名称:父类名 = [约束的数据类型,....]
- 类类型接口
1: 对类的约束,和抽象类有点相似
interface 接口名称{
属性类限制 //属性:数据类型;
方法限制 //函数名(参数:数据类型):返回值数据类型;
}
class 类名 implements 接口名称{
必须要有的属性
constructor(参数:数据类型){ }
必须要有的方法
}
- 接口扩展
1: 接口可以继承接口,本质上还是继承
interface 接口名{ 方法 }
interf 接口名 extends 被约束接口名{ 方法 }