Class类中的public、private、protected修饰符

目录

一、public公共修饰符

二、private私有修饰符

三、protected受保护的修饰符


一、public公共修饰符

在ts中,成员都默认用public,这表示我们可以自由的访问类中的成员

       class getGTong {
            public name: string;
            public constructor(name: any) {
                this.name = name;
            }
            public getName() {
                console.log(this.name);
            }
        }

二、private私有修饰符

1.当成员被标记为私有时,它就不能在类的外部被访问。也不能被子类所访问

Class类中的public、private、protected修饰符_第1张图片

  //声明一个类
        class getGTong {
            private name: string;
            public constructor(name: any) {
                this.name = name;
            }
            public getName() {
                console.log(this.name);
            }
        }
        let tong = new getGTong('hahah');



//不能私有成员不能被子类访问
         class getGTong {
            private name: string;
            constructor(name: any) {
                this.name = name;
            }
        }
        class Child extends getGTong {
            constructor() {
                super('heihei');
            }
        }

        let tong = new getGTong('hahah');
        let child = new Child();
        console.log(child.name);//报错 属性“name”为私有属性,只能在类“getGTong”中访问。

 2.当private标记的成员来自同一出处的时候,则可以兼容,如果为不同出处则不行

Class类中的public、private、protected修饰符_第2张图片

         class getGTong {
            name: string;
            constructor(name: any) {
                this.name = name;
            }
        }
        class Child extends getGTong {
            constructor() {
                super('heihei');
            }
        }
        class Other {
            private name: string;
            constructor(name: any) {
                this.name = name;
            }
        }
        let tong = new getGTong('hahah');
        let child = new Child();
        let other = new Other('hhhh');
        tong = child;
        tong = other; //报错 不能将类型“Other”分配给类型“getGTong”。 属性“name”在类型“Other”中是私有属性,但在类型“getGTong”中不是。

三、protected受保护的修饰符

protected和private作用相似,在类的外部仍然不能访问基类的私有成员,但在派生类中可以访问基类的私有成员。

      //声明一个类
        class getGTong {
            protected name: string;
            constructor(name: any) {
                this.name = name;
            }
        }
        class Child extends getGTong {
            constructor() {
                super('heihei');
                console.log(this.name); //可以访问基类受保护的成员
            }
        }

        let tong = new getGTong('hahah');
        let child = new Child();
        console.log(child.name); //报错 属性“name”受保护,只能在类“getGTong”及其子类中访问。

你可能感兴趣的:(TS知识点,typescript,前端)