一个接口可以约束类成员有哪些属性,以及他们的类型
1. 类实现接口时,必须实现接口中声明的所有属性,类定义自己的属性就没问题
2.接口只能约束类的公有成员,
3.接口不能约束类的构造函数
interface Human{
name:string;
eat():void;
}
class Wjp implements Human{
constructor(){
this.name = "lalala"
}
//private name:string;
name:string;
eat(){
console.log("eat");
}
sleep(){}
}
接口的继承
接口可以像类一样,相互继承,且一个接口可以继承多个接口
接口的继承可以抽离出 可以抽离出可重用的接口,也可以将多个接口合并成一个接口
interface Human{
name:string;
eat():void;
}
interface Child{
cry():void,
}
interface Man extends Human{
run():void,
}
interface Boy extends Man,Child{
}
let boy:Boy = {
run(){},
name:"wjp",
cry(){},
eat(){}
}
接口继承类
相当于接口把类的成员都抽象了出来,也就是只有类的成员结构而没有具体的实现
然后再由类实现这个接口
class Auto{
state = "自由";
run():void{};
private state2 = "宽恕" //AutoChild错误的实现了AutoIntrface接口,因为AutoChild不是Auto的子类,自然不能包含Auto的非公有成员
}
interface AutoIntrface extends Auto{ //这样接口中就隐含了state属性
}
class AutoChild implements AutoIntrface{
constructor(){
this.state = "wjp"
}
state:string;
run(){
}
}
Auto的子类也可以实现AutoInterface这个接口
//接口在抽离类的成员的时候,不仅抽离了公共成员而且抽离了私有成员和受保护成员;;;//在这个子类中就不必实现state属性,因为他是Auto的子类,自然就继承state
class Bus extends Auto implements AutoIntrface{
}
总结:1.接口之间是可以相互继承的,这样能够实现接口的复用
2.类之间也可以相互继承,这样能够实现方法和属性的复用
3.接口可以通过类来实现的,但接口只能约束类的公有成员
4.接口也可以抽离出类的成员,抽离的时候会包括公有成员、私有成员和受保护成员