当前位置: 首页 > news >正文

四、使用类实现功能

使用类实现功能

ts中类的继承

ES6中class类中,属性分为:实例上的属性,原型上的方法;也可以叫做:class的属性,class的方法。

类的继承叫法:父类=>子类,基类=>派生类;它们本质上是一样的。

super指向父类的构造函数

继承简单功能:扩展现有的类,通过抽离父类的方式来实现子类的复用。(实现公共方法的抽离,让子类实现复用)。

类上注解实例上的属性:

class Greeter {greeting: number; //仅当类被实例化的时候才会被初始化的属性constructor(message: number) {this.greeting = message;}greet(a: number): string {return "Hello, " + this.greeting;}
}
class Greeter1 extends Greeter {constructor() {super(123);}greet(a: number): string {return "Hello, " + this.greeting;}
}

ts中类中的public、private、protected、readonly修饰符

修饰符名称使用范围
public自身、子类、实例
private自身
protected自身和子类
readonly只读属性必须在声明时或构造函数里被初始化。

readonly只会用在属性签名或者索引签名(签名是数字)前面。

简写问题:

类中属性不写修饰符,默认被public修饰。

class Person {public name: string;constructor(theName: string) {this.name = theName;};sayName(){console.log(this.name, 2);}
}
// 简写
class Person1 {constructor(public name: string) {this.name = name;};sayName(){console.log(this.name, 2);}
}

存取器与静态属性

  • 存取器:TypeScript支持通过getters/setters来截取对对象成员的访问。

  • 静态属性:创建类的静态成员,这些属性存在于类本身上面而不是类的实例上。

let passcode = "secret passcode";class Employee {private _fullName: string;get fullName(): string {return this._fullName;}set fullName(newName: string) {if (passcode && passcode == "secret passcode") {this._fullName = newName;}else {console.log("Error: Unauthorized update of employee!");}}static a = 123;static b (a:number, b: number): number {return a + b ;}
}let employee = new Employee();
employee.fullName = "Bob Smith";
if (employee.fullName) {alert(employee.fullName);
}

抽象类abstract

抽象类做为其它派生类的基类使用。 它们一般不会直接被实例化。

存在抽象类、抽象方法

抽象类中有抽象方法,父类中抽象方法不需要实现(定义),而继承的子类必须实现它。

abstract class Animal {abstract makeSound(): void;move(): void {console.log('roaming the earch...');}
}
http://www.lryc.cn/news/17522.html

相关文章:

  • Java多线程不安全的例子
  • vivo X Flip会是高端手机市场的又一折叠屏爆款吗?
  • MySQL中MVCC如何解决不可重复读以及幻读?
  • 设计模式第八讲:观察者模式和中介者模式详解
  • 关于 mac 本地配置域名能 ping 通,但是浏览器不能访问的问题(而其他电脑操作可访问)
  • 【代码随想录二刷】Day23-二叉树-C++
  • Linux GPIO 开发指南
  • 记一次后端生成Zip文件通过浏览器下载后文件损坏,无法打开,不可预知的末端错误,下载后文件比源文件增大
  • python中savgol_filter的详细解释
  • C语言--指针进阶1
  • ssh的使用
  • Apache Hadoop生态-目录汇总-持续更新
  • 「JVM 编译后话」编译器优化技术
  • 【python学习笔记】:输出与输入
  • 汽车电子社区交流宣传
  • String、StringBuilder 和 StringBuffer 详解
  • windows服务器上传文件解决方案
  • Android Studio翻译插件推介(Translation)
  • DNS,DNS污染劫持,DNS加密
  • 【Python】如何度量优秀代码——静态分析工具
  • Open3D 点云高程归一化(基于2维地面点,Python版本)
  • 动态系统的建模与分析
  • QCC51XX---HCI log
  • Redis四 原理篇
  • 从0开始写Vue项目-Vue实现数据渲染和数据的增删改查
  • AI技术的发展,人工智能对我们的生活有那些影响?
  • Unity中的Mathf数学运算讲解(值得收藏)
  • ABBYY FineReader16最新PDF图片文字识别软件
  • Leetcode14. 最长公共前缀
  • JTT808jt1078