3、typescript類的定義

一、ts中定義類


            class Person{

                name:string;   //屬性  前面省略了public關鍵詞

                constructor(n:string){  //構造函數   實例化類的時候觸發的方法
                    this.name=n;
                }

                run():void{

                    alert(this.name);
                }

            }
            var p=new Person('張三');

            p.run()

二、ts中實現繼承 extends super

 class Person{

        name:string;

        constructor(name:string){
            this.name=name;
        }

        run():string{

            return `${this.name}在運動`
        }
    }
    // var p=new Person('王五');
    // alert(p.run())


    class Web extends Person{
        constructor(name:string){

            super(name);  /*初始化父類的構造函數*/
        }
    }


    var w=new Web('李四');
    alert(w.run());   //李四在運動

        class Person{

            name:string;

            constructor(name:string){
                this.name=name;
            }

            run():string{

                return `${this.name}在運動`
            }
        }
        // var p=new Person('王五');
        // 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('李四');

alert(w.run()); //首先會先去調用子類的方法,子類沒有再去找父類  輸出:李四在運動-子類

三、類裏面的修飾符

 public :公有          在當前類裏面、 子類  、類外面都可以訪問

 protected:保護類型    在當前類裏面、子類裏面可以訪問 ,在類外部沒法訪問

 private :私有         在當前類裏面可以訪問,子類、類外部都沒法訪問

 屬性如果不加修飾符 默認就是 公有 (public)

 

(1)public

 

          class Person{

                    public name:string;  /*公有屬性*/

                    constructor(name:string){
                        this.name=name;
                    }

                    run():string{

                        return `${this.name}在運動`
                    }
                }
                var p=new Person('王五');
                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('李四');

                w.work();   // 子類也可以訪問


當然類外部訪問公有屬性也是可以的

      class Person{

                    public name:string;  /*公有屬性*/

                    constructor(name:string){
                        this.name=name;
                    }

                    run():string{

                        return `${this.name}在運動`
                    }
                }

                var  p=new Person('哈哈哈');

                alert(p.name);   類外部訪問屬性

(2) protected 

   

           class Person{

                    protected name:string;  /*公有屬性*/

                    constructor(name:string){
                        this.name=name;
                    }

                    run():string{

                        return `${this.name}在運動`
                    }
                }
                var p=new Person('王五');
                alert(p.run())    //可以訪問到   


                class Web extends Person{
                    constructor(name:string){

                        super(name);  /*初始化父類的構造函數*/
                    }                  
                    work(){

                        alert(`${this.name}在工作`)
                    }
                }

                var w=new Web('李四11');

                w.work();

                alert( w.run());   //可以訪問到

類外外部沒法訪問保護類型的屬性

(3) private


                class Person{

                    private name:string;  /*私有*/

                    constructor(name:string){
                        this.name=name;
                    }

                    run():string{

                        return `${this.name}在運動`
                    }
                }
                var p=new Person('王五');

                alert(p.run()) //可以訪問類裏面的
                
                alert(p.name)  //不可以通過類外部訪問屬性

                class Web extends Person{

                    constructor(name:string){
                        super(name)
                    }

                    work(){

                        console.log(`${this.name}在工作`)
                    }
                }

                var w=new Web('李四11');

                alert( w.run());   // 子類不可以訪問

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章