TS class类的定义、extends类的继承、属性修饰符、implements类的接口实现、abstract抽象类

8,643次阅读
没有评论

共计 1944 个字符,预计需要花费 5 分钟才能阅读完成。

TS class 类的定义、extends 类的继承、属性修饰符、implements 类的接口实现、abstract 抽象类

1. class 类定义
class Person {
  
  name:string
  age:number
  address:string
  
  constructor(name:string,age:number,address:string) {
    this.name = name
    this.age = age
    this.address = address
  }
}

let p1 = new Person("ccc", 22, "china")
console.log(p1)  
2. extends 类继承
class Person {
  name:string
  age:number
  address:string
  constructor(name:string,age:number,address:string) {
    this.name = name
    this.age = age
    this.address = address
  }
}

// 使用 extends 继承 Person 类
class Man extends Person {
  sex:number
  constructor(name:string,age:number,address:string, sex:number) {super(name, age, address)
    this.sex = sex
  }
}

let p1 = new Man("ccc", 22, "china", 1)
console.log(p1)  // Man {name: 'ccc', age: 22, address: 'china', sex: 1}
3. 属性修饰符(static、public、protected、private)
class Person {
  static s = "static"
  name1:string
  protected age:number
  private address:string
  constructor(name1:string,age:number,address:string) {
    this.name1 = name1
    this.age = age
    this.address = address
  }
  static fun() {
    // static 修饰的方法无法访问其他修饰符修饰的变量
    this.name1  // 报错
    this.s  // 可以访问
  }
}

class Man extends Person {
  sex:number
  constructor(name:string,age:number,address:string, sex:number) {super(name, age, address)
    this.sex = sex
    this.address  // 报错:address 为 private 私有变量
  }
}

let p1 = new Man("ccc", 22, "china", 1)

p1.s // 报错:static 修饰的变量无法在实例上访问
Person.s // 可以访问
p1.name1 // 可以访问
p1.age // 报错:protected 修饰的变量无法在实例上访问
4. implements 类的接口实现
interface F {
  // 接口中只能包含抽象方法,不能有具体实现
  cName: () => void
}

class Person implements F {
  name: string
  age: number
  address: string

  constructor(name: string, age: number, address: string) {
    this.name = name
    this.age = age
    this.address = address
  }
  // 需要对 interface F 中有具体的方法实现
  cName():void {console.log(this.name);
  }
}

let p1 = new Person("ccc", 22, "china")
p1.cName()  // ccc
5. abstract 抽象类
abstract class Person {
  name1:string
  constructor(name1:string) {
    this.name1 = name1
  }
  
  abstract cName():void
}

let p1 = new Person("chenxize") 

class Man extends Person {
  age:number
  constructor(name:string, age:number) {
    super(name)
    this.age = age
  }
  
  cName():void {
    console.log(this.name1);
  }
}

let m1 = new Man("chenxize", 22)
console.log(m1);  

原文地址: TS class 类的定义、extends 类的继承、属性修饰符、implements 类的接口实现、abstract 抽象类

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-10-27发表,共计1944字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)