• TypeScript


    (function () {
        /**
         * abstract 开头的是抽象类,
         * 抽象类和其他区别不大,只是不能用来创建对象
         * 抽象类专门是让别人继承的的类
         */
       abstract class Animal {
            // 需要先定义,才能在constructor中this指向
            name: string;
            age: number;
    
            // 构造函数,会在对象创建时调用
            // new Dog() 的时候,就会调用constructor
            constructor(name: string, age: number) {
                /**
                 * 在实例方法中,this就表示当前的实例
                 * 在构造函数中当前对象就是当前新建的那个对象
                 * 可以通过this指向新建的对象中添加属性
                 */
    
                this.name = name;
                this.age = age;
            }
    
            /**
             * 该方法不适用所有动物,所以可以改为抽象方法
             * 抽象方法使用aabstract开头,没有方法体
             * 抽象方法只能定义在抽象类中,子类必须对抽象方法进行重写
             */
            /*sayHello() {
                console.log(`Dog ${this.name} is barking, woofing...`)
            }*/
            abstract sayHello():void;
        }
    
        // 定义一个表示够的类
        // 使Dog类继承Animal的属性
        /**
         * Dog extends Animal
         * 此时Animal被称为父类, Dog被称为子类
         * 使用继承后,子类将会继承父类所有的属性和方法
         *  -通过继承可以将多个类中共有的代码卸载一个勒种,这样只需要写一次即可让所有子类都同时有父类中的属性和方法
         *  -如果希望在子类中添加一些弗雷中没有的属性或方法,直接加就好
         *  -如果在子类中添加了和父类方法名一致的方法,则子类方法会覆盖父类方法, 这种子类覆盖父类方法的形式,称之为 方法重写
         */
        class Dog extends Animal {
            run() {
                console.log(`${this.name} is running...`)
            }
            sayHello(){
                console.log(`Dog ${this.name} is barking, woofing...`)
            }
        }
    
        class Cat extends Animal {
            sayHello() {
                console.log(`Cat ${this.name} is miao....`)
            }
        }
    
    
        const dog = new Dog('Tom', 4);
        const cat = new Cat('Max', 3);
        console.log(dog);
        dog.sayHello();
        dog.run();
        cat.sayHello();
    })()
  • 相关阅读:
    java09-8大基本类型的包装类、装箱拆箱
    java08-枚举
    类加载-双亲委托机制
    java虚拟机05-虚拟机加载类机制&类加载器
    java虚拟机04-内存分配与回收策略
    java-07 内部类、匿名内部类、局部内部类、lambda
    从0开始的Python学习012数据结构&对象与类
    从0开始的Python学习011模块
    从0开始的Python学习010return语句&DocStrings
    从0开始的Python学习009参数
  • 原文地址:https://www.cnblogs.com/ningxin/p/15107894.html
Copyright © 2020-2023  润新知