C++的public,private,protected权限

本文探讨了C++和Java中protected修饰符的不同含义。在C++中,protected成员仅对其自身类及其派生类可见;而在Java中,protected还允许同一包内的其他类访问。文章还详细介绍了C++中不同继承类型对protected成员的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载地址:http://blog.youkuaiyun.com/zhandoushi1982/article/details/5468509

 

由于不存在包的概念,因此,C++的protected与java中的protected有所不同,Java中的protected不但子对象可以访问,而且包里的其它地方,也可以显示的通过子对象调用,如

package pack1

public class A{

     protected int a;

}

package pack1

public class B{

     public static void main(String[] args){

          System.out.println(a);

     }

}

上述代码是没有问题的,但如果B与A不在同一个包中,则不能访问。因此,在Java中,protected在可见性在与packaged权限类似,而只是在继承性上,没有对包划界,packaged权限不允许子象访问其它包内父对象的包访问权限的属性。

      在C++里,protected属性有严格的定义,即只具有垂直的访问权限,只有其自身与其后代可以访问,限一个类的protected属性,只有其内部与子对象内部可以访问,而在其它地方是不可见的,下表列出了C++三种继承对属性的访问情况(缩小访问):

           public属性         protected属性          private属性

public继承                   public                protected                  不可见

protected继承          protected            protected                   不可见

private继承      private                private                     不可见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值