Typescript 静态属性&方法 多态 抽象类
程序员文章站
2022-07-03 21:57:37
...
静态属性、静态方法
- 用 static 关键词定义的属性和方法就是静态属性和静态方法,不需要类实例化就可以调用。
- 静态方法里不能直接调用类里面的属性,可以调用静态属性。
class Person{
public name:string;
static age:number; //静态属性
constructor(n:string){
this.name = n
}
getName():void{ //实例方法
console.log(`my name is ${this.name}`)
}
static getAge(){ //静态方法,不能直接调用类里面的属性,可以调用静态属性
console.log(`静态方法,获取age:${this.age}`)
}
}
var p = new Person('小明')
p.getName() //my name is 小明
console.log(p.name); //小明
console.log(Person.age); //undefined
Person.age = 22
Person.getAge() //静态方法,获取age:22
多态
- 父类定义一个方法不去实现,让继承它的子类去实现,每个子类都不同的表现
- 多态属于继承
class Animal{
name:string
constructor(n:string){
this.name = n
}
eat(){
console.log('吃东西');
}
}
class dog extends Animal{
constructor(n:string){
super(n)
}
eat(){ //重写Animal里的eat方法
console.log(`${this.name}吃肉`);
}
}
class cat extends Animal{
constructor(n:string){
super(n)
}
eat(){
console.log(`${this.name}吃鱼`);
}
}
let d = new dog('小狗狗')
d.eat() //小狗狗吃肉
let c = new cat('小花猫')
c.eat() //小花猫吃鱼
抽象类
- Typescript中的抽象类提供其他类继承的基类,不能直接被实例化
- 用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现,并且必须在子类中实现
abstract class Animal{
name:string
constructor(name:string){
this.name = name
}
abstract eat():any
sleep(){
console.log('sleep');
}
}
class Dog extends Animal{
// 抽象类的子类必须实现抽象类的抽象方法
constructor(name:string){
super(name)
}
eat(){
console.log(`${this.name}吃肉`);
}
}
let d = new Dog("旺旺")
d.eat() // 旺旺吃肉
d.sleep() //sleep
推荐阅读
-
PHP学习记录之面向对象(Object-oriented programming,OOP)基础【接口、抽象类、静态方法等】
-
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
-
php之static静态属性与静态方法实例分析
-
php面向对象中static静态属性和静态方法的调用
-
php面向对象中static静态属性与方法的内存位置分析
-
php静态成员方法和静态的成员属性的使用方法
-
用JavaScript实现静态私有变量,静态私有方法,私有变量,私有方法,公有属性,公有办法
-
PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子
-
java基础 静态 static 问在多态中,子类静态方法覆盖父类静态方法时,父类引用调用的是哪个方法?
-
第十一天-Java继承/多态特性-方法重写/抽象类/适配器/对象运行时的多态/