TypeScript - 类

1. 定义类

    class Person {

        name: string; // 属性

        // 构造函数, 实例化类的时候触发
        constructor(name: string) {
            this.name = name;
        }

        // 普通函数
        run(): void {
            console.log(this.name);
        }
    }

    var person: Person = new Person('Tom');
    person.run();


2. 继承 (extends, super)

    class Student extends Person {

        constructor(name: string) {
            super(name);
        }

        study(): void {
            console.log(`${this.name}在学习`);
        }
    }

    var student: Student = new Student('Tom');
    student.run();
    student.study();

    注: 如果父类子类中有同样的方法, 则调用的是子类的方法


3. 类中属性的修饰符
    public: 公有, 在类中, 子类和类外部都可以访问
    protected: 保护, 在类中和子类中可以访问, 在类外部不能访问
    private: 只能在类中访问, 子类和类的外部都不能访问
    注: 属性如果不加修饰符, 默认为public


4. 静态属性/静态方法

    class Person {
        // 静态属性
        static str: string = 'aaa'; 
        // 静态方法
        static run() {
            // ...
        }
    }
        
    注: 静态方法中不能直接调用类里面的非静态属性


5. 多态
    
    父类定义一个方法不去实现, 让继承它的子类去实现, 每一个子类有不同的表现


6. 抽象类

    它是提供其他类继承的基类, 不能直接被实例化
    用abstract关键字定义抽象类和抽象方法
    抽象类中的抽象方法不包含具体实现并且必须在派生类中实现
    抽象方法只能写在抽象类中

    abstract class Animal {
        abstract eat(): void;
    }

    class Dog extends Animal {
        eat(): void {
            // 抽象类的子类必须实现父类的抽象方法
        }
    }

 

posted @ 2020-07-08 10:00  萌胖次  阅读(94)  评论(0编辑  收藏  举报