1. 静态属性与静态方法。
在TypeScript里通过 static 关键字来修饰静态属性与静态方法。静态属性与静态方法不需要实例化就可以访问,访问时直接通过类名来调用,静态方法不能访问当前类里的属性,只能访问当前类里的静态属性。
代码语言:javascript复制class Person{
public name:String;
constructor(name:String){
this.name = name;
}
run(){
console.log(`${this.name}在运动`)
}
work(){
console.log(`${this.name}在工作`)
}
// 静态属性
static age:number = 30;
// 静态方法
static eat(){
console.log(`他在喝水`);
// 静态方法不能访问当前类里的属性
// 只能访问类里的静态属性
console.log(Person.age);
}
};
Person.eat();
// 他在喝水
// 30
2. TypeScript中的多态
多态即为父类定义一个方法,子类继承它以后,可以改写这个方法以符合子类子自己的要求。
代码语言:javascript复制class Animal{
name:string;
constructor(name:string){
this.name = name;
}
// 父类吃的方法
eat(){
console.log('这是一个吃的方法')
}
}
class Dog extends Animal{
constructor(name:string){
super(name);
}
// 子类吃的方法
eat(){
console.log(`${this.name}吃肉`);
}
}
class Cat extends Animal{
constructor(name:string){
super(name);
}
// 子类吃的方法
eat(){
console.log(`${this.name}吃鱼`)
}
}
3. 抽象类与抽象方法
在TypeScript里通过 abstract 关键字来定义抽象类和抽象方法,抽象方法只能放到抽象类里面,抽象类不能直接用来实例化,通常用来定义其它类的标准,在抽象的子类里面必须实现抽象类的抽象方法。
代码语言:javascript复制// 抽象类,其它类的基类,不能直接实现
abstract class Animal{
public name:string;
constructor(name:string){
this.name = name ;
}
abstract eat():any;
}
class Dog extends Animal{
constructor(name:string){
super(name);
}
// 抽象类的子类必须实现抽象类的抽象方法
eat(){
console.log(`${this.name}吃肉`)
}
}
var dog = new Dog('小黑');
console.log(dog.eat());
// 小黑吃肉