package b; public class B { protected int i ; } package a; public class A extends B{ public void test(){ B b = new B(); int m = b.i; } }
此时为什么编译报错,解释一下原因
你对protected的访问权限理解有误,他的意思是子类可以直接继承拥有这个字段,不是通过父类实例调用你可以用a.b的方式拥有b不在同一个包,当然访问不到啊<divclass="ref">
我很渣但是我会敲代码
<imgsrc="http://static.oschina.net/uploads/space/2015/0707/175042_vXVj_195533.png"alt=""><imgsrc="http://static.oschina.net/uploads/space/2015/0707/175051_rwwA_195533.png"alt=""><imgsrc="http://static.oschina.net/uploads/space/2015/0707/175104_HvLo_195533.png"alt="">
proctect不提供外部访问比如你这里的b.i;protected:同包或者子类可以直接访问。
现在a是b的子类,a可以直接访问b中的i
所以在使用类A的时候可以直接使用类B中的i
如:Aa =newA();
intx=a.i;
不知道你在子类中实例化父类有什么意义。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。