typescript——静态属性/方法 多态 抽象类
程序员文章站
2022-07-03 21:58:07
...
静态属性/方法
class Person {
name: string
static desc = 'static' // 静态属性
constructor (name: string) {
this.name = name
}
run (): void {
console.log(`${this.name} is running`)
}
static print () { // 静态方法:里面只能调用静态属性
console.log(`${Person.desc} function`)
}
}
Person.print() // static function
let p = new Person('tom')
p.run() // tom is running
多态
多态也是继承的一种表现,父类定义一个方法不去实现,让继承它的子类去实现,每个子类有不同的表现
class Animal {
name: string
constructor (name: string) {
this.name = name
}
eat () { // 动物都有吃,具体吃什么让继承它的子类去实现,每个子类有不同表现
console.log('eat')
}
}
class Dog extends Animal {
constructor (name: string) {
super(name)
}
eat () {
return this.name + ' eat meat'
}
}
class Cat extends Animal {
constructor (name: string) {
super(name)
}
eat () {
return this.name + ' eat fish'
}
}
let dog = new Dog('lucy')
let cat = new Cat('bob')
console.log(dog.eat()) // lucy eat meat
console.log(cat.eat()) // bob eat fish
抽象类
- 它是提供其他类继承的基类,不能直接被实例化
- 抽象类和抽象方法用来定义标准
- 用 abstract 关键字定义抽象类和抽象方法
- abstract 抽象方法只能放在抽象类里面
- 抽象类中的抽象方法不包含具体实现并且必须在派生类(子类)中实现
- 抽象类的子类必须实现抽象类里面的抽象方法,否则编译报错
例如:Animal 这个类要求它的子类必须包含 eat 方法
// 用 abstract 关键字定义抽象类和抽象方法
abstract class Animal {
public name: string
protected constructor (name: string) {
this.name = name
}
// abstract 抽象方法只能放在抽象类里面
// 抽象类中的抽象方法不包含具体实现并且必须在派生类(子类)中实现
abstract eat (): any
}
class Dog extends Animal {
constructor (name: string) {
super(name)
}
// 抽象类的子类必须实现抽象类里面的抽象方法,否则编译报错
eat (): any {
console.log(`${this.name} is eating`)
}
}
let dog = new Dog('john')
dog.eat() // john is eating
推荐阅读
-
PHP学习记录之面向对象(Object-oriented programming,OOP)基础【接口、抽象类、静态方法等】
-
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
-
php之static静态属性与静态方法实例分析
-
php面向对象中static静态属性和静态方法的调用
-
php面向对象中static静态属性与方法的内存位置分析
-
php静态成员方法和静态的成员属性的使用方法
-
用JavaScript实现静态私有变量,静态私有方法,私有变量,私有方法,公有属性,公有办法
-
PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子
-
java基础 静态 static 问在多态中,子类静态方法覆盖父类静态方法时,父类引用调用的是哪个方法?
-
第十一天-Java继承/多态特性-方法重写/抽象类/适配器/对象运行时的多态/