TypeScript 物件導向編程

來源:互聯網
上載者:User

標籤:存取修飾詞   構造   建構函式   程式員   這一   this   空間   預設   必須   

物件導向編程-類的聲明和使用

類的出現可以讓前端程式員抽象層次、增加維護性和複用性。當然這一系列的類的操作,我們都叫他物件導向編程。TypeScript就是一個基於類的物件導向程式設計語言。

類是對象具體事務的一個抽象,對象是類的具體表現。

// 類規範,首寫字母大寫 - 大駝峰命名class XiaoJieJie{// 區別於對象,不需要使用逗號隔開name: stringage: number// 建構函式// 建構函式的主要作用是給類中封裝的屬性進行賦值constructor(name:string, age:number){// 使用 this 賦值this.name = namethis.age = age}say(){console.log(‘NIHAOA!‘)}}// 有類之後聲明對象let jiejie:XiaoJieJie = new XiaoJieJie(‘fanbingbing‘,18)// 列印出產生的對象看下樣子console.log(jiejie)// 調用類方法jiejie.say()  

使用和定義類其實很簡單,關鍵是理解類的思想。要有抽象邏輯的能力,這樣才能複用和增強維護性。

物件導向編程-修飾符存取修飾詞
  • public:公有修飾符,可以在類內或者類外使用public修飾的屬性或者行為,預設修飾符。
  • protected:受保護的修飾符,可以本類和子類中使用protected修飾的屬性和行為。
  • private : 私人修飾符,只可以在類內使用private修飾的屬性和行為。
class XiaoJieJie{    public sex:string    protected name:string    private age:number    public constructor(sex:string, name:string, age:number){        this.sex = sex        this.name = name        this.age = age    }    public sayHello(){        console.log(‘HELLO‘)    }    protected sayLove(){        console.log(‘ILOVEYOU‘)    }}var jiejie:XiaoJieJie = new XiaoJieJie(‘nv‘, ‘DLLB‘, 16)// 列印出對象屬性看效果console.log(jiejie.sex)// 報錯:屬性“name”受保護,只能在類“XiaoJieJie”及其子類中訪問console.log(jiejie.name)// 報錯:屬性“age”為私人屬性,只能在類“XiaoJieJie”中訪問console.log(jiejie.age)// 調用方法jiejie.sayHello()// 報錯:屬性“age”為私人屬性,只能在類“XiaoJieJie”中訪問jiejie.sayLove()
唯讀屬性修飾符

使用readonly修飾符將屬性設定為唯讀,唯讀屬性必須在生命時或者建構函式裡被初始化(注意)。

class Man{    public readonly sex:string = ‘nan‘}var man:Man = new Man()// 報錯:無法分配到“sex”,因為它是常數或唯讀屬性man.sex = ‘nv‘
物件導向編程-繼承和重寫類的繼承

繼承:允許我們建立一個類(子類),從已有的類(父類)上繼承所有的屬性和方法,子類可以建立父類中沒有的屬性和方法。

// 父類class Nloong{    public name:string    public age:number    public skill:string    constructor(name:string, age:number, skill:string){        this.name = name        this.age = age        this.skill = skill    }    public interest(){        console.log(‘zhaonimei‘)    }}let loongObj:Nloong = new Nloong(‘baiye‘, 18, ‘coding‘)// 測試父類方法loongObj.interest()// 子類繼承父類屬性和方法 extends// 但是有一點需要我們注意,TypeScript不支援多重繼承。class Xloong extends Nloong{    // 子類擴充自身的屬性和方法    public xingxiang:string = ‘shuaiqi‘    public zhuangQian(){        console.log(‘yitianyigeyi‘)    }}let shuai = new Xloong(‘shuai‘, 5, ‘daren‘)// 子類能使用父類的方法,通過繼承而來shuai.interest()// 子類能使用父類找中沒有自身擴充的方法shuai.zhuangQian()
類方法的重寫
// 父類class Nloong{    public name:string    public age:number    public skill:string    constructor(name:string, age:number, skill:string){        this.name = name        this.age = age        this.skill = skill    }    public interest(){        console.log(‘zhaonimei‘)    }}let loongObj:Nloong = new Nloong(‘baiye‘, 18, ‘coding‘)loongObj.interest()// 子類class Xloong extends Nloong{    public xingxiang:string = ‘shuaiqi‘    // 重寫    public interest(){        // super 在子類中調用父類的方法,實現重寫時儲存父類的方法        super.interest()        console.log(‘chuangjianGS‘)    }        public zhuangQian(){        console.log(‘yitianyigeyi‘)    }}let shuai = new Xloong(‘shuai‘, 5, ‘daren‘)shuai.interest()shuai.zhuangQian()
物件導向編程-介面認識介面
// 介面interface Husband{    sex:string    interset:string    // 介面選擇性參數添加問號    maiBaoBao?:Boolean}let myhusband:Husband = {sex: ‘nan‘, interset: ‘kanshu‘}console.log(myhusband)
物件導向編程-命名空間命名空間的使用

Dehua 是同名類,可以使用不同的命名空間區分使用

// 命名空間namespace shuaiGe{    // export 暴露出去    export class Dehua{        public name:string = ‘liudehua‘        talk(){            console.log(‘woshishuaigeliudehua‘)        }    }}namespace bdjie{    export class Dehua{        public name:string = ‘madehua‘        talk(){            console.log(‘woshiershixiongmadehua‘)        }    }}let dehua1:shuaiGe.Dehua = new shuaiGe.Dehua()let dehua2:bdjie.Dehua = new bdjie.Dehua()dehua1.talk()dehua2.talk()

原文地址:http://jspang.com/post/typescript.html?tdsourcetag=s_pcqq_aiomsg

TypeScript 物件導向編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.