美文网首页
学习TypeScript 类

学习TypeScript 类

作者: 薥劃 | 来源:发表于2021-06-07 08:07 被阅读0次

    语法

    class class_name {
    // 类作用域
    }

    类包含以下几个模块(类的数据成员):

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

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

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

    class Person {
    }
    

    创建类的数据成员

    class Car { 
        // 字段 
        engine:string; 
     
        // 构造函数 
        constructor(engine:string) { 
            this.engine = engine 
        }  
     
        // 方法 
        disp():void { 
            console.log("发动机为 :   "+this.engine) 
        } 
    }
    

    创建实例化对象

    var object_name = new class_name([ arguments ])

    var obj = new Car("Engine 1")

    类中的字段属性和方法使用 . 号来访问:

    // 访问属性
    obj.field_name
    // 访问方法
    obj.function_name()

    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 一次只能继承一个类,不支持继承多个类,但 TypeScript 支持多重继承(A 继承 B,B 继承 C)

    class child_class_name extends parent_class_name

    class Shape { 
       Area:number 
       
       constructor(a:number) { 
          this.Area = a 
       } 
    } 
     
    class Circle extends Shape { 
       disp():void { 
          console.log("圆的面积:  "+this.Area) 
       } 
    }
      
    var obj = new Circle(223); 
    obj.disp()
    

    只能继承一个父类,TypeScript 不支持继承多个类,但支持多重继承:

    class Root { 
       str:string; 
    } 
     
    class Child extends Root {} 
    class Leaf extends Child {} // 多重继承,继承了 Child 和 Root 类
     
    var obj = new Leaf(); 
    obj.str ="hello" 
    console.log(obj.str)
    

    继承类的方法重写

    子类可以对父类的方法重新定义

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

    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 是私有的
    

    类和接口

    interface ILoan { 
       interest:number 
    } 
     
    class AgriLoan implements ILoan { 
       interest:number 
       rebate:number 
       
       constructor(interest:number,rebate:number) { 
          this.interest = interest 
          this.rebate = rebate 
       } 
    } 
     
    var obj = new AgriLoan(10,1) 
    console.log("利润为 : "+obj.interest+",抽成为 : "+obj.rebate )
    

    相关文章

      网友评论

          本文标题:学习TypeScript 类

          本文链接:https://www.haomeiwen.com/subject/ljniqltx.html