7.类、继承、抽象类
2019-02-03 本文已影响0人
我的昵称好听吗
- es5 的实例方法及静态方法
- ts 设置constructor中的属性值类型,如下,设置
sex
属性为string
类型;
class Permition {
public sex: string;
constructor (name:number){
this.sex = String(name);
}
}
let per = new Permition(123);
class Permition {
public sex: string;
static age: number = 12;
constructor (name:number){
this.sex = String(name);
}
work (){
}
static print(){
console.log(this.sex); // undefined,静态方法不能调用类的属性
console.log('静态',Permition.age); // 可以获取到静态属性
}
}
// let per = new Permition(123);
Permition.print();
// 编译后的
var Permition = /** @class */ (function () {
function Permition(name) {
this.sex = String(name);
}
Permition.prototype.work = function () {
};
Permition.print = function () {
console.log(this.sex); // undefined,静态方法不能调用类的属性
console.log('静态', Permition.age); // 可以获取到静态属性
};
Permition.age = 12;
return Permition;
}());
// let per = new Permition(123);
Permition.print();
- 抽象类
//typescript中的抽象类:它是提供其他类继承的基类,不能直接被实例化。
//用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现。
// abstract抽象方法只能放在抽象类里面
// 抽象类和抽象方法用来定义标准 。 标准: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();