一、类
public
:修饰的属性和方法都是公有的,可以在任何地方被访问到。默认所有的属性和方法都是public。(可以被继承、实例化)
private
:修饰的属性和方法是私有的,不能在声明它的类的外部访问(该类不允许继承或实例化)
protected
:修饰的属性和方法是受保护的,它与private类似,区别是他在子类中是允许被访问的(只允许被继承,不可实例化)
abstract
: 用于定义抽象类或抽象方法,(抽象类不允许被实例化, 抽象类中的抽象方法必须在子类中被实现)
abstract class Animal {
public name;
public constructor(name) {
this.name = name;
}
public abstract sayHi();
}
class Cat extends Animal {
public sayHi() { // 抽象类中的抽象方法在子类中必须被实现
console.log(`Meow, My name is ${this.name}`);
}
}
let cat = new Cat('Tom');
二、接口
接口是用来建立类与类之间的协议,它所提供的只是一种形式,而并没有具体的实现。
实现该接口的实现类必须要实现该接口的所有方法,通过使用implements关键字
,接口是抽象类的延伸
- 由interface关键词修饰
- 接口中可以定义成员变量, 但是这些成员变量默认都是public、static、final的常量
- 接口中没有已经实现的方法,全部都是抽象方法
- 一个类实现某一个接口, 必须实现接口中所有的方法
- 一个类可以实现多个接口
三、泛型
在定义函数、类或接口的时候, 不预先指定具体的类型, 而是在使用的时候再指定的一种特性
function createArray<T>(length: number, value: T): Array<T> {
let result: T[] = [];
for (let i = 0; i < length; i++) {
result[i] = value;
}
return result;
}
createArray<string>(3, 'x'); // ['x', 'x', 'x']
// 或
createArray(3, 'x'); // ['x', 'x', 'x']
网友评论