Java中关于同包,不同包各成员变量的访问疑惑

来源:百度知道 编辑:UC知道 时间:2024/05/28 15:16:35
package Base;
public class Base{
int friend_data=1;
protected int protected_data=2;
}

package Derived;
import Base.*;
public class Derived extends Base{
Base p=new Base();

void dataUse(){
System.out.println("data="+p.friend_data);
System.out.println("data="+p.protected_data);//这里为什么 //错误呢?
}
}

public class testData{
public static void main(String args[]){
Derived d=new Derived();
d.dataUse();
}
}
我不明白那里为什么会输不处结果来,报错!
System.out.println("data="+p.protected_data)换成
System.out.println("data="+this.protected_data)这个是对的,我能理解的,this就代表对象d通过不同包子类可以访问父类的保护成员,可是通过a为什么错了,本省不是可以访问自己的保护成员的啊?我始终不怎么明白!求知道的给我详细的解释下,拜托各位大侠
谁能再给我解释详细点吗?

p是Base类 属于Base包
this在这里是Derived类 属于Derived包 即便它是extends Base的 但它还是Derived包的类

这不就结了?你在Derived包里访问protected属性 自然只能访问自己包的

还要多详细- - protected只能被同一个包里的类访问 这不就结了。。。

没有抱错啊,这样是可以的嘛,只有private修饰的才是不行,只能在本类中使用