typescript-class-interface

interface Human {
    // new (name:string):void;  //不能约束类的构造函数
    name:string;
    eat():void;
}

class Asian implements Human {
    constructor(name:string){   //接口也不能约束类的构造函数
        this.name = name
    }
    name:string;
    // private name:string;    //接口不能约束类的私有属性
    eat(){}
    sleep(){}
}
/**
 * 接口只能约束类的公有成员
 */

//  接口继承接口
 interface  Man extends Human{
     run():void
 }

 interface Child {
     cry():void
 }

 interface Boy extends Man,Child {}

 let boy:Boy = {
     name:'',
     run(){},
     eat(){},
     cry(){}
 }

//  接口继承类: 接口把类的成员都抽象了出来  有类的结构 但没有具体实现
 class Auto {
     state =  1
    //  private state2 = 0  
 }
 interface AutoInterface extends Auto {}
 
 class C implements AutoInterface {
     state = 2  
    //  c不是子类  所以private属性无法实现 报错
 }
 class Bus extends Auto implements AutoInterface {
    // 因为是Auto的子类 , 已经继承了state  就不用再实现了  
    // 注意:  接口在抽离类的成员的时候,不仅抽离了公共成员, 还有私有成员和受保护成员
 }

posted @ 2020-05-09 14:23  橙云生  阅读(207)  评论(0编辑  收藏  举报