zoukankan      html  css  js  c++  java
  • 7、类class

    typescritp对类的支持可谓是更加丰富 除了ES6 ES7 已经有的内容还添加了一些新的内容

    7.1、面向对象的基础术语

    • 类(class):定义了一切事物的抽象特点
    • 对象(Object):类的实例
    • 面向对象(oop)的三大特征:封装 继承 多态

    // 创建以一个类

    class Animal {

    // 定义构造函数

    constructor(name) {

    this.name = name

    }

    // 定义方法

    run() {

    return `${this.name} is running`

    }

    }

    const snake = new Animal('lily')

    console.log(snake.run())

     

    // 继承

    // 新定义的Dog继承了Animal

    class Dog extends Animal {

    bark() {

    return `${this.name} is barking`

    }

    }

    const xiaobao = new Dog('xiaobao')console.log(xiaobao.run())console.log(xiaobao.bark())

    // 多态
    class Cat extends Animal {
          // 创建静态属性 - 可直接调用
          static categories = ['mammal']
          cosntructor(name) {
                 super(name)  // super重写构造函数
                 console.log(this.name)
          }
          run() {
                 return 'Meow, ' + super.run()
          }
    }
    const maomao = new Cat('maomao')
    console.log(maomao.run())

     

    7.2、TypeScript 中的类

    • Public:修饰的属性或方法是共有的
    • Private:修饰的属性或方法是私有的

    // 创建以一个类

    class Animal {

    // 定义构造函数

    constructor(name) {

    this.name = name

    }

    // 定义方法

    // 使用Private修饰 外部不可访问

    private run() {

    return `${this.name} is running`

    }

    }

    const snake = new Animal('lily')

    // 此时snake.run() 会报错

    console.log(snake.run())

     

    // 继承

    class Dog extends Animal {

    bark() {

    return `${this.name} is barking`

    }

    }

    const xiaobao = new Dog('xiaobao')
    // 此时xiaobao.run() 也会报错
    console.log(xiaobao.run())
    console.log(xiaobao.bark())
    • Protected:修饰的属性或者方法是受保护的
    // 创建以一个类

    class Animal {

    // 定义构造函数

    constructor(name) {

    this.name = name

    }

    // 定义方法

    // 使用Protected修饰 外部不可访问 但是自己的子类可以访问

    protected run() {

    return `${this.name} is running`

    }

    }

    const snake = new Animal('lily')

    // 此时snake.run() 会报错

    console.log(snake.run())

     

    // 继承

    class Dog extends Animal {

    bark() {

    return `${this.name} is barking`

    }

    }

    const xiaobao = new Dog('xiaobao')
    // 此时xiaobao.run() 不会报错
    console.log(xiaobao.run())
    console.log(xiaobao.bark())
      • readonly:修饰的属性或者方法只能读不能写
  • 相关阅读:
    poj 2049 Let it Bead(polya模板)
    poj 1286 Necklace of Beads (polya(旋转+翻转)+模板)
    poj 2226 Muddy Fields(最小点覆盖+巧妙构图)
    poj 3692 Kindergarten (最大独立集之逆匹配)
    poj 1466 Girls and Boys(二分匹配之最大独立集)
    poj 1486 Sorting Slides(二分图匹配的查找应用)
    poj 2112 Optimal Milking (二分图匹配的多重匹配)
    PHP访问控制
    OO(Object Oriented)
    重载与重写以及重构
  • 原文地址:https://www.cnblogs.com/shixiaokeng/p/14395652.html
Copyright © 2011-2022 走看看