zoukankan      html  css  js  c++  java
  • TypeScript——类

    ES6之后JS将能够使用基于类的面向对象的方式,TS中的类覆盖了JS中的类

    • 基本实现

    “类的成员属性”都是实例属性,而不是原型属性,“类的成员方法”都是“原型”方法

    class Dog {
        constructor(name: string) {
            this.name = name;
        }
        name: string // 需要增加成员类型注释
        run() {}
    }
    console.log(Dog.prototype) // { run: f, constructor: f }


    继承
    与ES不同的是:实例的属性必须有初始值,或者在构造函数中被初始化

    派生类从基类中继承属性和方法,用作于类的拓展
    class Husky extends Dog {
        constructor(name: string, color: string) {
            super(name) // 派生类的构造函数必须包含 "super" 调用
            this.color = color; // 访问派生类的构造函数中的 "this" 前,必须调用 "super"
        }
        color: string
    }
    • 修饰符

    修饰符含义作用
    public 公共成员(默认) 对所有类可见
    private 私有成员

    只能在类本身调用 而不能在实例/子类中调用;

    构造函数使用则该类不可实例化和继承;

    protected 被保护成员

    可在类本身及子类调用,而不能在实例中调用;

    构造函数使用则该类不可实例化,只能被继承;

    readonly 只读成员 一定需要初始化,不可修改
    static 静态成员 只能通过类名调用(实例化对象no),可被继承
    • 抽象类:只能被继承,而不能被实例化(对ES的拓展)

      

    // 抽象类:抽离出一些类的共性,有利于代码的复用和拓展 可实现多态
    abstract class Animal {
        eat() {
            console.log('eat')
        }
        abstract sleep(): void // 在抽象类中可以定义抽象函数
    }
    // let animal = new Animal() 无法创建抽象类的实例
    
    
    //
    class Bird extends Animal {
        sleep() {        // 在子类中做不同的操作,从而实现多态
            console.log('Bird sleep')
        }
    }

  • 相关阅读:
    搭建 Linux 下 GitLab 服务器(转)
    sql语法:inner join on, left join on, right join on具体用法
    Android Studio之同一应用创建多个Activity(一)
    java环境变量配置
    老鸟的Python新手教程
    域名注冊以及域名解析设置
    Android在WebView上构建Web应用程序
    利用JasperReport+iReport进行Web报表开发
    android App Widgets
    多数据库下activiti的流程定义缓存问题
  • 原文地址:https://www.cnblogs.com/JessieXie/p/12384925.html
Copyright © 2011-2022 走看看