类的定义和继承
类的定义
class Person {
name = '人';
getName() {
return this.name;
}
}
类的继承
class Person {
name = '人';
getName() {
return this.name;
}
}
class Student extends Person {
getStudentName() {
return '小明';
}
}
子类方法重写和super调用父类方法
- 当子类重写父类的方法后,可以使用super来调用父类方法
class Person {
name = '人';
getName() {
return this.name;
}
}
class Student extends Person {
getStudentName() {
return '小明';
}
// 重写父类方法;使用super调用父类方法
getName() {
return super.getName() + '小王';
}
}
const student = new Student();
student.getStudentName();
student.getName();
类的访问类型和构造器
- public 类内外都可以使用
- private 只允许在类内使用
- protected 允许在类内以及继承的子类中使用
public
class Person {
public name = 'tz';
public getName() {
return this.name;
}
}
const person = new Person();
person.name = 'tom';
person.getName();
private
class Person {
private name = 'tz';
private getName() {
return this.name;
}
}
class Student extends Person{
getStudentName() {
return super.getName() // 报错: private表示只能在类内使用,子类也不可以
}
}
const person = new Person();
console.log(person.name) // 报错: private表示只能在类内使用,类外部不可以
protected
class Person {
protected name = 'tz';
protected getName() {
return this.name;
}
}
class Student extends Person{
getStudentName() {
return super.getName() // 通过:protected在子类内部可以
}
}
const person = new Person();
console.log(person.name) // 报错:protected不能在类外部使用
constuctor
class Person {
public name = 'tz';
constructor(name: string) {
this.name = name
}
}
// 简化写法
class Person {
constructor(public name: string) {}
}
类的继承中构造函数中super的作用
在子类中的constuctor需要通过super调用父类的构造函数
class Person {
constructor(public name: string) {}
}
class Student extends Person{
constructor(public age: number) {
super('tz')
}
}
const student = new Student(18);
console.log(student.name) // tz
console.log(student.age) // 18