博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TypeScript--类
阅读量:5795 次
发布时间:2019-06-18

本文共 4499 字,大约阅读时间需要 14 分钟。

ts中定义类

class Person{    name:string;  //属性  前面省略了public关键词    constructor(n:string){  //构造函数   实例化类的时候触发的方法        this.name = n;    }    run():void{        alert(this.name);    }}var p = new Person('lisi');p.run()

clipboard.png

class Person{    name:string;    constructor(name:string){        this.name = name;    }    getName():string{        return this.name;    }    setName(name:string):void{        this.name = name;    }}var p = new Person('lisi');alert(p.getName());p.setName('wanwu');alert(p.getName());

clipboard.png

clipboard.png

继承

class Person{    name:string;    constructor(name:string){        this.name = name;    }    run():string{        return `${this.name}在运动`;    }}var p = new Person('lisi');alert(p.run());class Web extends Person{    constructor(name:string){        super(name);    }    run():string{        return `${this.name}在运动--子类`    }    work(){        alert(`${this.name}在工作`)    }}var w = new Web('wanwu');alert(w.run());w.work();

clipboard.png

clipboard.png

clipboard.png

修饰符

  1. public :公有 在当前类里面、 子类 、类外面都可以访问
  2. protected:保护类型 在当前类里面、子类里面可以访问 ,在类外部没法访问
  3. private :私有 在当前类里面可以访问,子类、类外部都没法访问

public

class Person{    public name:string;    constructor(name:string){        this.name = name;    }    run():string{        return `${this.name}在运动`;    }}var p = new Person('lisi');alert(p.run());class Web extends Person{    constructor(name:string){        super(name);    }    run():string{        return `${this.name}在运动--子类`    }    work(){        alert(`${this.name}在工作`)    }}var w = new Web('wanwu');alert(w.run());

clipboard.png

clipboard.png

protected

class Person{    protected name:string;    constructor(name:string){        this.name = name;    }    run():string{        return `${this.name}在运动`;    }}var p = new Person('lisi');alert(p.run());class Web extends Person{    constructor(name:string){        super(name);    }    run():string{        return `${this.name}在运动--子类`    }    work(){        alert(`${this.name}在工作`)    }}var w = new Web('wanwu');alert(w.run());

clipboard.png

clipboard.png

静态属性 静态方法

class Person{    public name:string;  /*公有属性*/    static sex = '男' //静态属性    constructor(name:string){        this.name=name;    }    run():string{        return `${this.name}在运动`    }    static print(){        // alert('print方法'+this.name);        alert('print方法'+Person.sex);    }}var p = new Person('lisi');Person.print();

clipboard.png

clipboard.png

多态

多态:父类定义一个方法不去实现,让继承它的子类去实现,每一个子类有不同的表现

多态属性继承

父类有方法,子类也有同样的方法

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 +'吃骨头'    }}var d = new Dog('d');alert(d.eat());class Cat extends Animal{    constructor(name:string){        super(name);    }    eat(){        return this.name +'吃鱼'    }}var c = new Cat('c');alert(c.eat());

clipboard.png

clipboard.png

父类有方法,子类没有同样的方法

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 +'吃骨头'    }}var d = new Dog('d');alert(d.eat());class Cat extends Animal{    constructor(name:string){        super(name);    }    // eat(){    //     return this.name +'吃鱼'    // }}var c = new Cat('c');alert(c.eat());

clipboard.png

clipboard.png

抽象类

抽象类:它是提供其它继承的基类,不能直接被实例化

  1. abstract关键字定义抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现
  2. abstract抽象方法只能放在抽象类里面
  3. 抽象类和抽象方法用来定义标准,标准:Animal这个类要求它的子类必须包含相同的方法,如eat()

直接被实例化,报错

abstract class Animal{    public name:string;    constructor(name:string){        this.name = name;    }    abstract eat():any;    run(){        console.log('运动')    }}var a = new Animal();

clipboard.png

父类定义的抽象方法,子类没有定义,报错

abstract class Animal{    public name:string;    constructor(name:string){        this.name = name;    }    abstract eat():any;    run(){        console.log('运动')    }}class Dog extends Animal{    constructor(name:string){        super(name);    }    // eat(){    //     console.log(this.name+'吃骨头')    // }}

clipboard.png

正常

类非抽象方法,子类可以不写

abstract class Animal{    public name:string;    constructor(name:string){        this.name = name;    }    abstract eat():any;    run(){        console.log('运动')    }}class Dog extends Animal{    constructor(name:string){        super(name);    }    eat(){        console.log(this.name+'吃骨头')    }}var d = new Dog('d');d.eat()class Cat extends Animal{    constructor(name:string){        super(name);    }    eat(){        console.log(this.name+'吃鱼')    }}var c = new Cat('c');c.eat()

clipboard.png

转载地址:http://fxbfx.baihongyu.com/

你可能感兴趣的文章
gauss消元
查看>>
数据结构之链表与哈希表
查看>>
IIS7/8下提示 HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求...
查看>>
http返回状态码含义
查看>>
响应式网站对百度友好关键
查看>>
洛谷P2179 骑行川藏
查看>>
(十八)js控制台方法
查看>>
VB关键字总结
查看>>
android代码生成jar包并混淆
查看>>
一个不错的vue项目
查看>>
屏蔽指定IP访问网站
查看>>
根据毫秒数计算出当前的“年/月/日/时/分/秒/星期”并不是件容易的事
查看>>
python的图形模块PIL小记
查看>>
shell变量子串
查看>>
react报错this.setState is not a function
查看>>
Centos7.x:开机启动服务的配置和管理
查看>>
HTML5 浏览器返回按钮/手机返回按钮事件监听
查看>>
xss
查看>>
iOS:百度长语音识别具体的封装:识别、播放、进度刷新
查看>>
JS获取服务器时间并且计算距离当前指定时间差的函数
查看>>