开发者社区> 问答> 正文

java protected 子类创建父类对象,访问不了父类protected变量?报错

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;
      }
}

此时为什么编译报错,解释一下原因



展开
收起
爱吃鱼的程序员 2020-06-14 14:49:07 547 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你对protected的访问权限理解有误,他的意思是子类可以直接继承拥有这个字段,不是通过父类实例调用你可以用a.b的方式拥有b不在同一个包,当然访问不到啊<divclass="ref">

    引用来自“zz621”的评论

    不在同一个包,当然访问不到啊说的就是本包和子类都能访问,但是你这里的例子既不是本包又不是子类,怎么访问小弟弟非public属性和方法的是不能被类实例访问的。
    哥们,不带这么玩的。先理解下public protected和private的用法<divclass='ref'>

    引用来自“会飞的章鱼”的评论

    先理解下public protected和private的用法回复<aclass='referer'target='_blank'>@leo108:+1024回复<aclass='referer'target='_blank'>@leo108:+1事实就是你没理解对

    我很渣但是我会敲代码

    <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;

    不知道你在子类中实例化父类有什么意义。

    2020-06-14 14:49:24
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载