面向对象

类:class

class Person {

    // 静态属性
    static readonly lang: string = "chinese";

    // 静态只读属性,类似const
    static readonly happy: boolean = true;

    // 成员属性/实例属性
    name: string = "孙悟空";

    // 成员属性没有默认值
    age: number;

    // 只读成员属性
    readonly sex: string;

    // 所有属性必须初始化,无论是不是只读属性,而java中只有只读属性(final)才必须初始化
    // 这是构造器,构造器不可以重载
    constructor(age: number, sex: string) {
        this.age = age; // this指代当前对象
        this.sex = sex;
    }

    // 静态方法
    static sayHello() {
        console.log("hello");
    }

    // 成员方法
    printHello() {
        console.log("hello");
    }
}

// 根据类创建对象
const p = new Person(10, "男");
// 访问静态属性
console.log(Person.lang);
// 访问静态方法
Person.sayHello()
// 访问成员属性
console.log(p.age)
// 访问成员方法
p.printHello()

封装

执行结果:

解决不可以使用get 和 set的问题:tsc -t es5 a.ts

public、protected、private

  • public,都可以访问

  • protected是提供给子类访问的,外部不可访问

  • private是私有的,只有自己内部可以访问

属性快速写法

下面两种写法是等同的:

继承

多继承:不支持

不支持多继承。

子类新增方法

给狗增加跑的方法:

方法重写

super关键字

构造器重写

抽象类

抽象类不可以用于创建实例。抽象类中可以定义抽象方法,抽象方法没有方法体,且必须必须被重写:

接口

函数式接口

最后更新于

这有帮助吗?