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 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 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”及其子类中访问。

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值