3.类(对象的模型),接口

// 类中主要是属性和方法

class Person {

  name: string ;(实例属性,通过对象访问)

  static age: number = 18;(静态属性,通过类进行访问)

  readonly sex: string = '男';  (只读属性,无法进行写操作)

  constructor(tag: string) {

    this.name = tag(this表示当前实例)

  }

  say() { console.log('hi!') }; 

}

let  person1 = new Preson('李华');

继承:从基类(超类)中继承属性和方法给派生类 (子类)。

abstract class Animal {  (abstrac抽象类,不能直接实例化)

  name: string

  constructor(name: string) {

      this.name = name

  }

  bark(){

    console.log(`${this.name}叫`)

  }

  abstract move(): void;(抽象方法必须重写) 

}

class Dog extends Animal {

  constructor(name: string){ super(name);}(super()执行基类的构造函数,之后才能用this)

  move() {

    console.log('move')

  }

}

class Cat extends Animal {

  constructor(name: string){ super(name);}

  move() {

    console.log('move')

  }

 

}

let dog = new Dog('旺财')

let cat = new Cat('小白')

 _属性的封装

// public(默认,公共)  private(私有,在内部修改) protected 可在子类中访问

class Person {

  private _name: string;

  constructor(name: string){

    this._name = name  

  }

  get name(){   

    return this._name

  }

  set name(value: string){

    //控制修改操作

    this._name = value

  }

}

接口(用来定义一个类结构,应包含那些属性和方法,也可用于类型声明,接口可重复声明)

type myType = {

  name: string,

  age: number

}

interface myinterface{

  name: string,

  age: number

}

let obj: myInter {

  name: '李华',

  age: 18

}

// 接口只定义对象结构,所有方法都是抽象方法

interface myInter{

  name: string;

  say():void;

}

class MyClass implements myInter{

  name: string

  constructor(name: string) {

      this.name = name

  }

  say(){

    console.log(‘hi’)  

  }

}

//  接口就是定义的一种规范,对于类的限制

posted @ 2021-11-22 09:57  云在青  阅读(46)  评论(0编辑  收藏  举报