4、TypeScript 类

介绍

  • TypeScript 是面向对象的 JavaScript。
  • 类描述了所创建的对象共同的属性和方法。
  • TypeScript 支持面向对象的所有特性,比如 类、接口等。

定义类的关键字为 class,后面紧跟类名,类可以包含以下几个模块(类的数据成员):

  • 字段 − 字段是类里面声明的变量。字段表示对象的有关数据。

  • 构造函数 − 类实例化时调用,可以为类的对象分配内存。

  • 方法 − 方法为对象要执行的操作。

实例代码

  class  Car {
    // 字段
    engine:string;
    
    // 构造函数
    constructor(engine:string) {
      this.engine  =  engine
    }
    
    // 方法
    disp():void {
      console.log("发动机为 : "+this.engine)
    }
  }
  // 创建一个对象
  var  obj  =  new  Car("XXSY1")
  
  // 访问字段
  console.log("读取发动机型号 : "+obj.engine)
  
  // 访问方法
  obj.disp()

类的继承

  • TypeScript 支持继承类,即我们可以在创建类的时候继承一个已存在的类,这个已存在的类称为父类,继承它的类称为子类。

  • 类继承使用关键字 extends,子类除了不能继承父类的私有成员(方法和属性)和构造函数,其他的都可以继承。

  • TypeScript 一次只能继承一个类,不支持继承多个类,但 TypeScript 支持多重继承(A 继承 B,B 继承 C)。

  • 继承类的方法重写

  class  PrinterClass {
    doPrint():void {
      console.log("父类的 doPrint()方法。")
      }
    }
    
  class  StringPrinter  extends  PrinterClass {
    doPrint():void {
      super.doPrint() // 调用父类的函数
      console.log("子类的 doPrint()方法。")
    }
  } 
  
  var  obj  =  new  StringPrinter();
  obj.doPrint();

输出结果:

  父类的 doPrint() 方法。  
  子类的 doPrint()方法。

static 关键字

static 关键字用于定义类的数据成员(属性和方法)为静态的,静态成员可以直接通过类名调用。

  class  StaticMem {
    static  num:number;
    static  disp():void {
    console.log("num 值为 "+  StaticMem.num)
    } 
  }
  
  StaticMem.num  =  12  // 初始化静态变
  StaticMem.disp() // 调用静态方法

instanceof 运算符

instanceof 运算符用于判断对象是否是指定的类型,如果是返回 true,否则返回 false。

  class  Person{ }
  var  obj  =  new  Person()
  var  isPerson  =  obj  instanceof  Person;
  console.log("obj 对象是 Person 类实例化来的吗? "  +  isPerson);

访问控制修饰符

TypeScript 中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。TypeScript 支持 3 种不同的访问权限。

  • public(默认) : 公有,可以在任何地方被访问。

  • protected : 受保护,可以被其自身以及其子类和父类访问。

  • private : 私有,只能被其定义所在的类访问。

  class  Encapsulate {
    str1:string  =  "hello"
    private  str2:string  =  "world"
  }

  var  obj  =  new  Encapsulate()
  console.log(obj.str1) // 可访问
  console.log(obj.str2) // 编译错误, str2 是私有的

类和接口

类可以实现接口,使用关键字 implements

原文地址:https://www.cnblogs.com/lived/p/10746164.html