TypeScript实例讲解(六)

338 阅读2分钟

这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

接上一篇:TypeScript实例讲解(五)

本篇内容:TypeScript 中类的继承和访问类型。
类的定义

TypeScript 中类和 JaveScript ES6里面原生的类非常相似,只是在它的基础上新增了更多的特性。

// 例 1
// 定义类
class Person {
    name = 'bear';
    getName() {
        return this.name
    }
}
// 创建实例
const person = new Person();

例1中通过 class 语法定义了一个类 Person,并且同时定义了类的属性 name 和方法 getName()。 有了类就可以通过类创建实例。

类的继承
// 例 2
class Student extends Person{
    study() {
        return 'study'
    }
}
const student = new Student();

类通过 extends 语法实现继承,被继承者是父类(如例2中的 Person),继承者则是子类(如例2中的 Student)。子类不但拥有自己新的属性或方法,还拥有父类的属性和方法。

通过类的继承子类也可以重写父类中的属性和方法。

// 例 3
class Student extends Person{
    study() {
        return 'study'
    },
    getName() {
        return 'panda'
    }
}
const student = new Student();
student.getName();    // panda

例3中子类 Student 重写了父类的 getName() 方法,因此实例 student 调用 getName() 方法得到的结果是 panda,而不是 bear。

类中的super

子类重写了父类中的属性或方法,这时子类中又需要使用父类中的属性或方法怎么办呢?这时候就该 super 上场了。
super 的作用是如果子类重写了父类的方法,子类仍然可以调用父类的方法。

// 例 4
class Student extends Person{
    study() {
        return 'study'
    }
    getName() {
        return 'My name is ' + super.getName()
    }
}
const student = new Student();
student.getName();    // My name is bear

例4中实例 student 调用了子类 Student 中的方法 getName(),子类 Student 又调用了父类 Person 中的方法 getName()

类的访问类型

TypeScript 类的访问类型有 public, private, protected 三种。
public 允许在类的内外被调用。类的内部调用属于类内调用。实例上调用属于类外调用。
private 允许在类的内部调用,不允许在类外调用。
protected 允许在类的内部以及继承的子类中使用。
在类中,属性和方法的默认访问类型是 public

// 例 5
class Person {
    public name = 'bear';
    public getName() {
        return this.name   // 属于类内调用
    }
}
const person = new Person();
person.name;               // 属于类外调用

本篇完!如果文章对你有一点点帮助,请记得点个赞哦。