类的概念

  • 类(Class):定义了一件事物的抽象特点,包含它的属性和方法;
  • 对象(Object):类的实例,通过new生成
  • 面对对象(OOP)的三大特点:封装,继承,多态

    • 封装(Encapsulation):将对数据的操作细节隐藏起来,只暴露对外的接口。外界调用时不需要(也不可能)知道细节,就能通过对外提供的接口来访问该对象,同时也保证了外界无法随意更改对象内部的数据。
    • 继承(Inheritance):子类继承父类,子类除了拥有父类的所有特性外,还有一些更具体的特性

      • 子类又叫派生类
      • 父类又叫基类,超类
    • 多态(Polymorphism):由继承产生了相关的不同的类,对同一个方法可以有不同的响应
  • 存取器(getter&setter):用以改变属性的读取和赋值行为
  • 修饰符(Modifiers):修饰符是一些关键字,用于限定成员或类型的性质。
  • 抽象类(Abstract Class):抽象类是供其他类继承的基类,抽象类不允许被实例化。

    • 抽象类中的抽象方法不能被自己实现
    • 抽象类中的抽象方法必须在子类中实现
  • 接口(Interfaces):不同类之间共有的属性或方法可以抽象为一个接口。接口可以被多个类实现(implements)。一个类只能继承父类,但是可以实现多个接口。

类的用法

  • constructor定义构造器;
  • 支持 get 和 set 关键字,改变属性的赋值和读取行为;
    class Animal {

        constructor(name) {

            this.name = name;

        }

        get name() {

            return 'Jack';

        }

        set name(value) {

            console.log('setter: ' + value);

        }

    }





    let a = new Animal('Kitty'); // setter: Kitty

    a.name = 'Tom'; // setter: Tom

    console.log(a.name); // Jack
  • extend表明继承,子类中用super关键字调用父类的构造函数和方法;

    • 子类必须在构造器的一开始就使用super(params)来调用父类的构造器
  • 修饰符

    • public修饰符宝石该属性(方法)为公共方法,可以在任何地方被访问和修改

      * 成员(属性/方法)默认为public
    • static 修饰符修饰的方法(属性)为静态方法(属性),不需要实例化直接通过类调用;
    • private修饰符表示该属性(方法)是私有的,不允许在声明它的类外(子类也不允许)访问和修改

      * 修饰构造器时,类不允许被继承或实例化;
    • protected 修饰符表示该属性(方法)被保护,对子类来说只可以访问,不可以修改;

      * protected修饰构造器时,类只允许继承,不允许实例化;
      
  • readonly只读属性关键字,只允许出现在属性声明或索引签名或构造函数中;

    • readonly与其他修饰符共存时,要写在后面;
  • 修饰符使用在构造函数参数中,等同于类中定义该属性,同时给该属性赋值;
  • abstract 用来定义抽象类和其抽象方法;
  • 定义类的时候会同时生成类型和构造函数,所以类名可以当作接口来用,也用new实例化对象
class Animal {

    name: string;

    constructor(name: string) {

        this.name = name;

    }

    sayHi(): string {

      return \`My name is ${this.name}\`;

    }

}

let a: Animal = new Animal('Jack');

console.log(a.sayHi()); // My name is Jack

胡晓峰
97 声望2 粉丝

撼大摧坚,徐徐图之