TypeScript-2.类(class)

1.认识类

(1) public: 类的外部和内部、继承类均可访问

(2) protected: 类的内部、继承类均可访问

(3) private: 类内部可访问(一般get set提供外部访问)

class Animal {
    name: string;               // 默认public
    private _age: number;        
    protected nickName: string = 'annimal';
    constructor(name: string) {
        this.name = name;
    }
    
    get age() : number {
        return this._age
    }

    set age(age : number) {
        this._age = age;
    }
}

let animal = new Animal('Animal');
let fullName = animal.name
// 无权限访问
// let age = animal.age                     
// let nickname = animal.nickName

 

2.类继承

(1) extends:继承关键字

(2) 子类继承了父类的公共和保护的属性和方法

(3) super: 执行基类的构造函数, 位置: 子类构造函数的第一行

class Dog extends Animal{
    constructor(name: string, nickName: string) {
        super(name);
        this.nickName = nickName
    }

    public fullName (): string {
        return `${this.name}: ${this.nickName}`;
    }
}

let dog = new Dog('Dog', '狗狗...');
// 父类提供了get set此处可以直接操作
dog.age = 20;
console.log(dog.name + ':' + dog.age + '-' + dog.fullName())

 

3.类静态属性

(1) static:类静态属性关键字(可以类名直接访问)

class Cat extends Animal{
    static voice: string = 'miao....';
    constructor(name: string) {
        super(name)
    }
}

let voice = Cat.voice
console.log(voice)

 

4.抽象类

(1) abstract: 抽象类关键字

(2) abstract抽象方法必须在派生类实现

abstract class Department {
    // name: string;
    // constructor(name: string) {
    //     this.name = name
    // };
    constructor(public name: string) {};

    printName(): void {
        console.log('Department name: ' + this.name);
    }

    // 抽象方法必须包含 abstract关键字,且必须在派生类实现
    abstract printMeeting(): void;
}

class AccountingDepartment extends Department {

    constructor() {
        super('Accounting and Auditing'); // 在派生类的构造函数中必须调用 super()
    }

    printMeeting(): void {
        console.log('The Accounting Department meets each Monday at 10am.');
    }

    generateReports(): void {
        console.log('Generating accounting reports...');
    }
}

// let department: Department; // 允许创建一个对抽象类型的引用
// department = new Department(); // 错误: 不能创建一个抽象类的实例
let department = new AccountingDepartment(); // 允许对一个抽象子类进行实例化和赋值
department.printName();
department.printMeeting();
department.generateReports();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值