美文网首页
类与接口

类与接口

作者: 不落05 | 来源:发表于2023-05-22 20:37 被阅读0次

TypeScript 中类的用法

public private 和 protected

TypeScript 可以使用三种访问修饰符(Access Modifiers),分别是 publicprivateprotected

  • public 修饰的属性或方法是公有的,可以在任何地方被访问到,默认所有的属性和方法都是 public
  • private 修饰的属性或方法是私有的,不能在声明它的类的外部访问
  • protected 修饰的属性或方法是受保护的,它和 private 类似,区别是它在子类中也是允许被访问的
class Animal {
  public name;
  public constructor(name) {
    this.name = name;
  }
}

let a = new Animal('Jack');
console.log(a.name); // Jack
a.name = 'Tom';
console.log(a.name); // Tom

构造器用到参数,需要先声明,否则编译报错。
使用private

class Animal {
  private name;
  public constructor(name) {
    this.name = name;
  }
}

let a = new Animal('Jack');
console.log(a.name);
a.name = 'Tom';
// index.ts(9,13): error TS2341: Property 'name' is private and only accessible within class 'Animal'.
// index.ts(10,1): error TS2341: Property 'name' is private and only accessible within class 'Animal'.

当构造函数修饰为 private 时,该类不允许被继承或者实例化。
当构造函数修饰为 protected 时,该类只允许被继承。

抽象类

抽象类是不允许被实例化
其次,抽象类中的抽象方法必须被子类实现

类实现接口

实现(implements)是面向对象中的一个重要概念。一般来讲,一个类只能继承自另一个类,有时候不同类之间可以有一些共有的特性,这时候就可以把特性提取成接口(interfaces),用implements关键字来实现。这个特性大大提高了面向对象的灵活性。
一个类可以实现多个接口,用,号分开:

interface Alarm {
    alert(): void;
}

interface Light {
    lightOn(): void;
    lightOff(): void;
}

class Car implements Alarm, Light {
    alert() {
        console.log('Car alert');
    }
    lightOn() {
        console.log('Car light on');
    }
    lightOff() {
        console.log('Car light off');
    }
}
接口继承接口

extends实现继承

接口继承类

可以理解为接口继承了类的一个实例对象,不包含类的构造函数,静态属性或静态方法,只继承其中的实例属性和实例方法。

相关文章

网友评论

      本文标题:类与接口

      本文链接:https://www.haomeiwen.com/subject/mhpjsdtx.html