天天看点

《TypeScript》 - 类

TypeScript 是面向对象的 JavaScript。

类描述了所创建的对象共同的属性和方法。

TypeScript 支持面向对象的所有特性,比如 类、接口等。

TypeScript 类的定义与实例化

TypeScript 类定义方式如下:

class class_name { 
    // 类作用域
}      

实例化方式如下:

var object_name = new class_name([ arguments ])      

定义类的关键字为 class,后面紧跟类名,类可以包含以下几个模块(类的数据成员):

  • 字段 − 字段是类里面声明的变量。字段表示对象的有关数据。
  • 构造函数 − 类实例化时调用,可以为类的对象分配内存。
  • 方法 − 方法为对象要执行的操作。

访问控制修饰符

TypeScript 中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。TypeScript 支持 3 种不同的访问权限。

  • public(默认) : 公有,可以在任何地方被访问。
  • protected : 受保护,可以被其自身以及其子类和父类访问。
  • private : 私有,只能被其定义所在的类访问。

代码示例:

class Person {
    // 字段
    private age: number;

    // 构造函数 
    constructor(age:number) { 
        this.age = age; 
    }  
    
    // 方法
    public setAge(age:number):void {this.age = age;};
    public getAge():number {return this.age};
}

let personA = new Person(18);
console.log(personA.getAge()); // 18

personA.setAge(27);
console.log(personA.getAge()); //27      

static 关键字

static 关键字用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用。

代码示例:

class Person {
    static uname: string = 'zzh';

    static printName(): void {
        console.log(this.uname);
    }
}

console.log(Person.uname); // zzh
Person.printName(); //zzh      

类的继承

TypeScript 支持继承类,即我们可以在创建类的时候继承一个已存在的类,这个已存在的类称为父类,继承它的类称为子类。

类继承使用关键字 extends,子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他的都可以继承。

TypeScript 一次只能继承一个类,不支持继承多个类,但 TypeScript 支持多重继承(A 继承 B,B 继承 C)。

语法格式如下:

class child_class_name extends parent_class_name      

继承类的方法重写

class Person {
    // 字段
    private age: number;

    // 构造函数 
    constructor(age:number) { 
        this.age = age; 
    }  
    
    // 方法
    public setAge(age:number):void {this.age = age;};
    public getAge():number {return this.age};
}

let personA = new Person(18);
console.log(personA.getAge()); // 18

personA.setAge(27);
console.log(personA.getAge()); //27

// 类的继承
class Student extends Person {
    // 方法重写
    public setAge(age: number): void { 
        super.setAge(age + 100); // 调用父类的函数;
        console.log('重写父类方法');
    }
}

let studentA = new Student(18);
console.log(studentA.getAge()); // 18

studentA.setAge(18);
console.log(studentA.getAge()); // 118      

类和接口

interface Car {
    name:string;
    color: string;
    run(): void;
}

class BMW implements Car {
    name:string = '宝马一号';
    color:string = '红色';
    run():void {
        console.log('宝马正在路上跑~~~~')
    }
}

var bmw1 = new BMW();
console.log(bmw1.name); // 宝马一号
console.log(bmw1.color); // 红色
bmw1.run(); // 宝马正在路上跑~~~~      

继续阅读