c++和java中的public,protected,private

C++中public,protected,private访问[zz]
第一:private, public, protected 访问标号的访问范围
private:只能由1.该类中的函数、2.其友元函数访问。
不能被任何其他访问,该类的对象也不能访问。

protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。
但不能被该类的对象访问。

public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.该类的对象访问。
 
注:友元函数包括3种:设为友元的普通的非成员函数;设为友元的其他类的成员函数;设为友元类中的所有成员函数。

 

class以及类的数据成员和成员函数默认是private; struct默认是public

 

第二:类的继承后方法属性变化

private 属性不能够被继承。
使用private继承,父类的protected和public属性在子类中变为private;
使用protected继承,父类的protected和public属性在子类中变为protected;
使用public继承,父类中的protected和public属性不发生改变;
 
如下所示:
                                 public:            protected:       private:
public继承            public              protected        不可用
protected继承       protected       protected        不可用
private继承            private           private             不可用

C++默认继承方式是private。

Java中public,private,protected,和默认的区别

1、private修饰词,表示成员是私有的,只有自身可以访问;  

2、protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员,同时相同包内的其他类也可以访问protected成员。  

3、无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限; 

 4、public修饰词,表示成员是公开的,所有其他类都可以访问;

 

Java中的访问权限有public,private,protected。
(1)访问权限修饰符修饰成员变量和方法
public:表明该成员变量和方法是共有的,能在任何情况下被访问。
protected:必须在同一包中才能被访问。(说的比较简单,看个例子就明白了)   
       eg:class A
       {
            protected int weight ;
            protected int f( int a,int b   )  
            {
              // 方法体
            }
       }     
       假设B与A在同一个包中,则
        class B
        {
            void g()
            {
                 A a=new A();
                 A.weight=100;//合法
                 A.f(3,4);    //合法
             }
        }
特别说明:什么是在同一个包中?答:用package打包在一起的class ,叫在同一个包中。
private:只能在本类中访问。
             eg:  class   Test
                    { 
                       private int money;
                       Test()
                       {
                          money=2000;
                       }
                       private int getMoney()
                       {
                         return money;
                       }
                       public  static  void main(String args[])
                       {
                         Test te=new  Test();
                         te.money=3000;             //合法
                         int m=te.getMoney();       //合法
                         System.out.println("money="+m);
                       }
                    }
实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。
(2)访问权限修饰符修饰类
       不能用protected和private修饰类

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值