protected的访问权限

 Protected的访问权限:

1.被protected修饰的变量或方法可以在本包和中被访问;

2.可以被子类访问,即使不在同一包中;

3.在子类中,只能通过子类的引用来访问protected方法和成员变量,子类中通过父类或其他子类来访问是不允许的,如下所示:

<span style="font-size:18px;">//Bird.java------------------------------
package birdpack;


public class Bird{
 protected int nFeathers;
 
}


//Duck1.java-----------------------------
package duckpack;


import birdpack.Bird;


public class Duck1 extends Bird{
 public void setn(int duck1n){
  //在子类中直接访问父类中的protected变量
  nFeathers=duck1n;
 }
}
//Duck2.java------------------------------ 
package duckpack;


import birdpack.Bird;


public class Duck2 extends Bird{


 public void construct(int newduck2){
  Duck2 d2 = new Duck2();
  //在子类中通过子类的对象访问父类中的protected变量
  d2.nFeathers=newduck2;
  Bird d = new Duck2();
  d2.nFeathers=newduck2;//(编译错误)
  //父类引用指向之类对象是无法调用protected变量的。
 }
}


//Duck3.java------------------------------
package duckpack;


import birdpack.Bird;


public class Duck3 extends Bird{


 public void construct(int newduck3){
  Bird b = new Bird();
  //子类中用父类对象反而不能访问父类中的protected变量
  b.nFeathers=newduck3;
 }
}


//Swan.java--------------------------------
package duckpack;


import birdpack.Bird;


public class Swan extends Bird{


 public void construct(int swan){
  Duck1 d1 = new Duck1();
  //子类中用另外一个子类的对象也不能访问父类中的protected变量
  d1.nFeathers=swan;
 }
}</span>



 

public:对所有类可见

protected:对本包和所以子类可见

private:仅对本类可见

默认:对本包可见

public > protected > 默认 > private



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值