首页 > 代码库 > 关于protected在子类创建父类对象无法访问父类protected方法或成员
关于protected在子类创建父类对象无法访问父类protected方法或成员
子类(父类的外部包)中访问父类的protetcted属性或者方法,是不可以通过创建父类对象调用的。
注意:此处不讨论同包下的父类子类,因为同包下所有类都可访问protected属性或者方法。
请参见Java官方文档:Chapter 6. Names中的6.6.2.1. Access to a protected Member
具体例子如下:
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 { }
关于protected在子类创建父类对象无法访问父类protected方法或成员
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。