typescript(三) 类的定义、继承、修饰符

(一)类的定义

class Person {
  name:string; // name string类型
  age:number; // age number类型
  constructor(name:string,age:number) {
    this.name = name;
    this.age = age;
  }
  print() {
    return this.name + this.age
  }
}

var p = new Person('zhouzhou', 18)
console.log(p.print())

(二)类的继承 extends 关键字

继承之后父元素有的全都有~比如一个Student继承Person

// 父类
class Person {
  name:string;
  age:number;
  constructor(name:string,age:number) {
    this.name = name;
    this.age = age;
  }
  print() {
    return this.name + this.age
  }
}

// 子类
class Students extends Person {
  cardNum:number; // 子类自己的属性
  school:string; // 子类自己的属性
  constructor(cardNum:number, school:string) {
    super('zhouzhou', 18) // super关键字 用来访问父类的构造函数 以及传入值
    this.cardNum = cardNum;
    this.school = school
  }
  homework () {
    return `${this.name} is ${this.age} years old, His cardNumber is ${this.cardNum}, his school is ${this.school}`
  }
}


var p = new Students(20655, '北京大学') // 传入子类需要的就好 父类的值通过super来传

console.log(p.homework())

打印结果:

zhouzhou is 18 years old, His cardNumber is 20655, his school is 北京大学

注:如果父类和子类有一些同名的方法,先执行自身的,如果自身没有,再去看看父类的~

(三)访问修饰符

访问修饰符有三类:public 、 private、protected

public:定义类的共有成员,任何人都可以进行访问,如果不加访问修饰符,则默认为public

private:定义类的私有成员,在类外不可以访问

protected: 受保护的 子类可以访问,其他类不可以访问

class Person {
  public name:string; // 公共的
  private age:number; // 私有的
  protected email:string; // 受保护的
  constructor (name:string, age:number, email:string) {
    this.name = name;
    this.age = age;
    this.email = email
  }
  print () {
    return `name: ${this.name}, age: ${this.age}, email: ${this.email}`
  }
}

var p = new Person('zhouzhou', 18, '197467950@qq.com')
console.log(p.print()) // 类的内部访问 正常打印
console.log(p.name) // zhouzhou
console.log(p.age) // 报错 (类外访问)
console.log(p.email) // 报错 (类外访问)

(四)静态属性、静态方法

在js中:实例属性、实例方法、静态属性、静态方法

function Person () {
  // 实例属性
  this.name = 'name';
  // 实例方法
  this.print = function () {
    return `name: ${this.name}`
  }
}

// 静态方法
Person.add = function () { 
   console.log('add one')
}

// 静态属性
Person.age = 19

// 静态调用
Person.add()
console.log(Person.age)

// 实例的调用
var a = new Person()
console.log(a.name)
console.log(a.print())

在ts中~

class Person {
  // 实例属性
  static email:string;
  name:string;
  age:number;
  constructor(name:string, age:number, email:string) {
    this.name = name;
    this.age = age;
    // this.email = email
  }
  // 实例方法
  print () {
    return this.name + ',' + this.age
  }
  // 静态static修饰符 方法
  static show() {
    console.log('show')
  }
}
// 静态属性的调用
Person.email = '197867950@qq.com'
console.log(Person.email)

// 静态方法的调用
Person.show()

// 实例的调用
var p = new Person('zhouzhou', 19, '197846795')
console.log(p.print())



如果方法不依赖于实例方法,即可定义成静态的~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值