一个接口可以约束类成员有哪些属性以及它们的类型,只能约束类的公有成员
类实现接口的时候必须实现接口中所有的属性和方法。
interface Huma {
name: string;
eat() : void;
}
class Asian implements Human{
constructor(name:string) {
this.name = name;
}
name:string
eat (){}
sleep() {} //类定义了一个自己的属性或者方法是可以的
}
接口的继承
接口和类一样可以相互继承,并且一个接口可以继承多个接口
用Man接口继承Huma接口
interface Man extends Huma{
run() : void // 给Man添加方法
}
interface Child{
cry() : void // 给Child添加方法cry
}
// 继承多个
interface Boy extends Man,Child{}
// 定义对象,符合Boy接口的定义
let boy:Boy = {
// 这时候提示对象需要包含四个属性:Huma,Child,Man这三个接口中的属性和方法
name:'',
eat() {},
run() {},
cry() {}
}
// 以上可以看出,接口的继承可以抽离可重用的接口,把多个接口合并成一个接口
接口继承类
接口把类的成员
class Auto {
state = 1
private state2 = 2
}
interface AutoInterface extends Auto {
// 接口继承Auto这个类,接口中隐含了state属性
}
// 要想实现AutoInterface这个接口,只需要类的成员中包含state属性就可以了
class C implements AutoInterface {
state = 1
// 这里拿不到private state2,因为C不是Auto的子类,自然也不能包含它的非共有成员---报错
}
class AutoChild extends Auto implements AutoInterface{
// 这里没必要实现state属性,因为AutoChild是Auto的子类
// 接口在抽离类的成员时候,不仅抽离了公共成员,而且抽离了私有成员和受保护成员
// 这里可以拿到private state2
}
接口和类的关系.png
网友评论