zoukankan      html  css  js  c++  java
  • 【学习笔记】抽象类

    抽象类

    原文:https://typescript.bootcss.com/classes.html

    抽象类做为其它派生类的基类使用。它们一般不会直接被实例化。不同于接口,抽象类可以包含成员的实现细节。abstract关键字是用于定义抽象类和在抽象类内部定义抽象方法。

    abstract class Animal {
        abstract makeSound(): void;
        move(): void {
            console.log('roaming the earch...')
        }
    }

    抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。抽象方法的语法与接口方法相似。两者都是定义方法签名但不包含方法体。然而,抽象方法必须包含abstract关键字并且可以包含访问修饰符。

    abstract class Department {
        constructor(public name: string) {}
    
        printName(): void {
            console.log('Department name: ' + this.name)
        }
    
        abstract printMeeting(): void; // 必须在派生类中实现
    }
    
    class AccountingDepartment extends Department {
        constructor() {
            super('Accounting and Auditing'); // 在派生类的构造函数中必须调用super()
        }
    
        printMeeting(): void {
            console.log('The Accounting Department meets each Monday at 10am.');
        }
    
        generateReports(): void {
            console.log('Generating accounting reports...');
        }
    }
    
    let department: Department; // 允许创建一个队抽象类型的引用
    department = new Department(); // 错误,不能创建一个抽象类的实例
    department = new AccountingDepartment(); // 允许对一个抽象子类进行实例化和赋值
    department.printName();
    department.printMeeting();
    department.generateReports(); // 错误,方法在声明的抽象类中不存在
  • 相关阅读:
    windows基础应用(word)
    Spring-处理自动装配的歧义性
    Spring-Condition设置
    Spring-profile设置
    Spring-导入和混合配置
    Spring-装配Bean
    jQuery-理解事件
    Oracle-批量修改语句及相关知识点
    Oracle中的不等于号
    JavaScript-事件冒泡简介及应用
  • 原文地址:https://www.cnblogs.com/cathy1024/p/14029924.html
Copyright © 2011-2022 走看看