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

oneMore 发布于 2015/07/07 16:19
阅读 1K+
收藏 0
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;
      }
}

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



加载中
0
pantrick
pantrick
你对protected的访问权限理解有误,他的意思是子类可以直接继承拥有这个字段,不是通过父类实例调用你可以用a.b的方式拥有b
0
开源中国-不入流码农
开源中国-不入流码农
不在同一个包,当然访问不到啊
0
oneMore
oneMore

引用来自“zz621”的评论

不在同一个包,当然访问不到啊
能继承过来,却访问不了父类变量,到处写的都是 protected 的属性和方法可以在本包和子类访问,我理解有误?
Shazi199
Shazi199
说的就是本包和子类都能访问,但是你这里的例子既不是本包又不是子类,怎么访问
0
开源中国董事会主席
开源中国董事会主席
小弟弟 非 public 属性和方法 的是不能被类实例访问的。
0
如比如比
如比如比
哥们,不带这么玩的。
0
会飞的章鱼
会飞的章鱼
先理解下public   protected 和private的用法
0
oneMore
oneMore

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

先理解下public   protected 和private的用法
绝对比你理解的清楚
开源中国董事会主席
开源中国董事会主席
回复 @leo108 : +1024
shijacky
shijacky
回复 @leo108 : +1
leo108
leo108
事实就是你没理解对
0
会飞的章鱼
会飞的章鱼

我很渣 但是我会敲代码

0
偷懒的码农
偷懒的码农
proctect不提供外部访问比如你这里的b.i;
0
alexwan
alexwan

protected : 同包或者子类可以直接访问。

现在 a 是 b 的子类,a可以直接访问 b中 的 i

所以在使用 类A的时候 可以直接使用类B中的i

如: A a  = new A(); 

    int x = a.i;

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

返回顶部
顶部