java protected修饰符访问权限

java protected修饰符同包内可访问,继承该类的子类可以访问,不管该子类是否和父类在同一个包内是吗?




package  com.fu;  
   
public  class  Base {  
       
         protected  int  protectedInt;   //protected成员  
         public  int  publicInt;         //public 成员  
         protected   int   getProtectedInt(){  
             return  protectedInt;  
         }  
         protected  static  int  staticProtectInt;  
         private  int  privateInt;  
         public  static  void  main(String[] args) {  
             Base b= new  Base();  
             b.privateInt= 5 ;  
         }  

}


package  com.zi;  
   
import  com.fu.Base;  
   
public  class  TestOtherPackageSubClass  extends  Base {  
     public  void  test() {  
         Base b =  new  Base();  // 使用基类  
         b.publicInt =  0 // 可以访问  
         //b.protectedInt=3; // 访问protected的属性失败  
         //b.getProtectedInt(); // 访问protected的方法失败 
         Base.staticProtectInt= 9 ;  
     }  
       
     public  void  test2() {  
         //privateInt =6;   //访问父类的私有-出错
         publicInt =  0 // 可以访问  
         protectedInt =  2 // 直接用父类的属性-成功  
         super .protectedInt= 4 ;  
           
         getProtectedInt();  // 直接用父类的方法-成功  
         System.out.println( "getProtectedInt-test2:" +getProtectedInt());  
           
         protectedInt =  22 // 直接用父类的属性-成功  
         Base.staticProtectInt= 10 ;  
         super .getProtectedInt();  // 直接用父类的方法-成功  
         System.out.println( "getProtectedInt-test2:" +getProtectedInt());  
     }  
       
     public  void  test3(){  
         TestOtherPackageSubClass t= new  TestOtherPackageSubClass();  
         t.protectedInt= 6 ;  
         t.getProtectedInt();  
         System.out.println( "getProtectedInt-test3:" +t.getProtectedInt());  
     }  
       
     public  static  void  main(String[] args) {  
         TestOtherPackageSubClass t= new  TestOtherPackageSubClass();  
         t.test2();  
         System.out.println(Base.staticProtectInt);  
     }  
}


运行结果:
getProtectedInt-test2: 4
getProtectedInt-test2: 22
10

从运行结果 4,22 看出  test2 中不管有没有写super.protectInt,还是直接protectInt 都是指向父类的成员。
从这可以看出不在同一包的子类可以访问父类数据成员。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值