关于protected在子类创建父类对象无法访问父类protected方法或成员

子类(父类的外部包)中访问父类的protetcted属性或者方法,是不可以通过创建父类对象调用的。
注意:此处不讨论同包下的父类子类,因为同包下所有类都可访问protected属性或者方法。

请参见Java官方文档:Chapter 6. Names中的6.6.2.1. Access to a protected Member
具体例子如下:

父类C:在包c下

1 package c;
2 public class C {
3   protected int id;
4   protected void test() {
5 
6   }
7 }

子类S:在包s下

 1 package s;
 2 import c;
 3 import q;
 4 import t;
 5 public class S extends C {
 6 void accessProtected() {
 7   //C中的protected仅允许其子类S内部访问
 8   id = 5;
 9   test();
10   //此外通过E.id访问(在C子类S的内部),则E必须是S或者S的子类(注意不是C)
11   S s = new S();
12   s.id = 6;
13   s.test();
14 
15   Q q = new Q();
16   q.id = 5;
17   q.test();
18 
19   //此外通过E.id访问(在C子类S的内部),则E必须是S或者S的子类(注意不是C)
20   //所以c.id不可访问
21   // C c = new C();
22   // c.id;
23   // c.test();
24 
25   //此外通过E.id访问(在C子类S的内部),则E必须是S或者S的子类(注意不是C)
26   //所以t.id不可访问
27   // T t = new T();
28   // t.id;
29   // t.test();
30   }
31 }

S的子类Q,包q下

package q;
import s;
public class Q extends S{

}

C的子类T,包t下

package t;
import c;
public class T extends C {

}

 

转载于:https://www.cnblogs.com/uoar/p/7144804.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值