7.类、继承、抽象类

2019-02-03  本文已影响0人  我的昵称好听吗
image.png
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();
上一篇下一篇

猜你喜欢

热点阅读