一、TypeScript中的静态属性、静态方法
- es5中的静态属性、方法
function Person() {this.run1 = function () { } // 实例方法}Person.name = '哈哈哈'; // 静态属性Person.run2 = function () { } // 静态方法var p = new Person();Person.run2(); // 静态方法的调用
1、ts中的静态属性、方法
class Person {public name: string;public age: number = 20;static sex = "男"; // 静态属性constructor(name: string) {this.name = name;}run() {alert(`${this.name}在运动`)}work() {alert(`${this.name}在工作`)}static print() {// 静态方法里面没法直接调用类里面的属性,想要调用类里面的属性需要把属性变为静态属性alert('print方法' + Person.sex);}}Person.print(); // 调用静态方法console.log(Person.sex); // 调用静态属性
二、多
- 父类定义一个方法不去实现,让继承它的子类去实现 每一个子类有不同的表现
- 多态属于继承
class Animal {name: string;constructor(name: string) {this.name = name;}eat() { // 具体吃什么不知道,继承它的子类去实现每一个子类的表现不一样console.log('吃的方法')}}class Dog extends Animal {constructor(name: string) {super(name)}eat() {return this.name + '吃粮食'}}class Cat extends Animal {constructor(name: string) {super(name)}eat() {return this.name + '吃老鼠'}}
三、抽象类
- 它是提供其他类继承的基类,不能直接被实例化
- 用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现
- abstract抽象方法只能放在抽象类里面
抽象类和抽象方法用来定义标准,标准:Animal 这个类要求它的子类必须包含eat方法 ```typescript // 标准:Animal 这个类要求它的子类必须包含eat方法 abstract class Animal { public name: string; constructor(name: string) {
this.name = name;} abstract eat(): any; // 抽象方法不包含具体实现并且必须在派生类中实现 run() {
console.log('其他方法可以不实现')} } // var a = new Animal() // 错误的写法,无法直接实例化
class Dog extends Animal { //抽象类的子类必须实现抽象类里面的抽象方法 constructor(name: any) { super(name) } eat() { console.log(this.name + ‘吃粮食’) } } var d = new Dog(‘小花花’); // 现在可以实例化了 d.eat(); ```
