手记

【九月打卡】第51天 TypeScript(7)

类的定义和继承

类的定义

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
0人推荐
随时随地看视频
慕课网APP