这是我参与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; // 属于类外调用
本篇完!如果文章对你有一点点帮助,请记得点个赞哦。