12 # 类与接口的关系

发布时间:2024年01月16日

类类型

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

  1. 类实现接口的时候,必需实现接口中声明的所有的属性
  2. 接口只能约束类的公有成员
  3. 接口也不能约束类的构造函数
interface Human {
    // new (name: string): void;
    name: string;
    eat(): void;
}

// 使用 Asian 实现 Human 接口
class Asian implements Human {
    constructor(name: string) {
        this.name = name;
    }
    // private name: string;
    name: string;
    eat() {}
    sleep() {}
}

接口的继承

接口可以像类一样,相互继承,并且一个接口可以继承多个接口。

接口的继承可抽离出可重用的接口。也可以将多个接口合并成一个接口。

interface Human {
    // new (name: string): void;
    name: string;
    eat(): void;
}

// 使用 Asian 实现 Human 接口
class Asian implements Human {
    constructor(name: string) {
        this.name = name;
    }
    // private name: string;
    name: string;
    eat() {}
    sleep() {}
}

interface Man extends Human {
    run(): void;
}

interface Child {
    cry(): void;
}

interface Boy extends Man, Child {}

// 不写属性会报错:类型“{}”缺少类型“Boy”中的以下属性: run, name, eat, cry
const boy: Boy = {
    name: '',
    run() {},
    eat() {},
    cry() {}
}

接口继承类

接口处了继承接口之外,还可以继承类。这就相当于接口把类的成员都抽象了出来,只有类的成员结构,没有具体的实现。

接口在抽离类的成员的时候,不仅抽离了公共成员,还抽离了私有成员和受保护成员。

class Auto {
    state = 1;
    // private state2 = 2;
}
// 接口 AutoInterface 继承 Auto
interface AutoInterface extends Auto {}
// 类 C 实现 AutoInterface 接口
class C implements AutoInterface {
    state = 1;
}
// 子类 Bus 继承 Auto 实现 AutoInterface 接口
class Bus extends Auto implements AutoInterface {}

类与接口的关系示意图

  1. 接口之间可以相互继承,这样能实现接口的复用
  2. 类之间也能相互继承,可以实现方法和属性的复用
  3. 接口是可以通过类来实现的,但是接口只能约束类的公有成员
  4. 接口也能抽离出类的成员,抽离的时候会包括(公有成员,私有成员,受保护成员)

在这里插入图片描述

文章来源:https://blog.csdn.net/kaimo313/article/details/135634224
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。