淘先锋技术网

首页 1 2 3 4 5 6 7

一、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());   // 子类不可以访问