8.类与接口的关系

2019-11-27  本文已影响0人  我性本傲

一个接口可以约束类成员有哪些属性以及它们的类型,只能约束类的公有成员

类实现接口的时候必须实现接口中所有的属性和方法。
 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
上一篇下一篇

猜你喜欢

热点阅读