protected 子类对象可见 父类对象不可见

qx8668 2009-07-20 11:33:24
protected 子类对象可见 父类对象不可见

两个不同包 父类放在testinf包 子类放在fff包


//父类
package testinf;

public class AA {
protected String sSting="123456";
}

//------------------------//

//子类
package fff;
import testinf.AA;

public class R extends AA{

public static void main(String[] args) {
AA aa = new AA();
//---System.out.println(aa.sSting);为什么父类访问不了
R r = new R();
System.out.println(r.sSting);
}
}

...全文
284 21 打赏 收藏 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyaqin0918 2010-03-27
  • 打赏
  • 举报
回复
了解了~~果然是这个样子~
bayougeng 2009-07-24
  • 打赏
  • 举报
回复
作为protected的对象,子类只能通过继承去访问,不能通过创建父类的对象去访问
也就是说要通过子类的引用去访问才可以,这是java的规则。

正解。
语速五块 2009-07-24
  • 打赏
  • 举报
回复
学习了
sjk_Sand 2009-07-24
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分
sjk_Sand 2009-07-24
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分
sjk_Sand 2009-07-24
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分
smallbear923 2009-07-24
  • 打赏
  • 举报
回复
protected 为包访问属性,只能在该包中访问,在其他包中就不能访问了。
elevationkaiserk 2009-07-24
  • 打赏
  • 举报
回复
同意这样的说法
长安聊IP商业 2009-07-24
  • 打赏
  • 举报
回复
//父类
package testinf;

public class AA {
protected String sSting="123456";
}


//子类
package fff;
import testinf.AA;

public class R extends AA{

public static void main(String[] args) {
AA aa = new AA();
//---System.out.println(aa.sSting);为什么父类访问不了
R r = new R();
System.out.println(r.sSting);
}
}



在子类中根本调用不到 AA类中用 protected 修饰的访问不了
virus7581 2009-07-24
  • 打赏
  • 举报
回复
补充下:
AA aa=new AA();//---System.out.println(aa.sSting);为什么父类访问不了?是因为不在A的内部
R r=new R(); System.out.println(r.sSting); 可以。是因为在B的内部(main同样属于B)
virus7581 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 qx8668 的回复:]
protected 子类对象可见 父类对象不可见

两个不同包 父类放在testinf包 子类放在fff包

Java code//父类package testinf;publicclass AA {protected String sSting="123456";
}//------------------------////子类package fff;import testinf.AA;publicclass Rextends AA{publicstaticvoid main(String[] args) {
AA aa=new AA();//---System.out.println(aa.sSting);为什么父类访问不了 R r=new R();
System.out.println(r.sSting);
}
}
[/Quote]
你把main方法写到另一个类你就会发现问题了
protected修饰的成员只能在类及子类内部访问
musecangying007 2009-07-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lovecj6185 的回复:]
//---System.out.println(aa.sSting);为什么父类访问不了

作为protected的对象,子类只能通过继承去访问,不能通过创建父类的对象去访问
也就是说要通过子类的引用去访问才可以,这是java的规则

另外,注意,父类的属性和方法都是可以继承的
但是属性不可以修改,而方法可以被重写
[/Quote]
up
heelin 2009-07-24
  • 打赏
  • 举报
回复
正解。
fisherhe 2009-07-22
  • 打赏
  • 举报
回复
protected:同一包中可以访问,不同包的子类可以访问;
梦科 2009-07-21
  • 打赏
  • 举报
回复
应该是这样的:
private 为该类访问属性,只能在该类内部访问。
protected 为包访问属性,只能在该包中访问,在其他包中就不能访问了。
public 为公共访问属性,不论是在包中还是在包外都能访问。


wenpeng1990 2009-07-21
  • 打赏
  • 举报
回复
父类只能访问其方法。
2到20个英文 2009-07-21
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分
aytii 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lovecj6185 的回复:]
//---System.out.println(aa.sSting);为什么父类访问不了

作为protected的对象,子类只能通过继承去访问,不能通过创建父类的对象去访问
也就是说要通过子类的引用去访问才可以,这是java的规则

另外,注意,父类的属性和方法都是可以继承的
但是属性不可以修改,而方法可以被重写
[/Quote]

书上如果能说着这么简单易懂就好了
lovecj6185 2009-07-21
  • 打赏
  • 举报
回复
//---System.out.println(aa.sSting);为什么父类访问不了

作为protected的对象,子类只能通过继承去访问,不能通过创建父类的对象去访问
也就是说要通过子类的引用去访问才可以,这是java的规则

另外,注意,父类的属性和方法都是可以继承的
但是属性不可以修改,而方法可以被重写
老紫竹 2009-07-21
  • 打赏
  • 举报
回复
父类是不知道子类的存在的。有点搞笑吧。
子类可以使用父类保护的属性,这点好理解。
加载更多回复(1)

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧