java 中继承和protected修饰符的问题

问题是这样的:第一个包package1中我建了个父类A,其中有一个protected修饰的属性b.然后在第二个包package2中建了一个类B继承了A.这个时候我用父类引... 问题是这样的:
第一个包package1中我建了个父类A,其中有一个protected修饰的属性b.

然后在第二个包package2中建了一个类B继承了A.

这个时候我用父类引用子类对象时,也就是A x = new B();时,对象属性x.b却访问不到.

但是直接用子类的引用实现子类对象时,即B x = new B();x.b是可以访问的.

而protected是只要是子类都可以访问的,为什么第一种方法不可以访问?还有到底A x = new B();的意思是什么?

请高手解答,小弟很迷惑
展开
 我来答
koostyle
2007-08-09 · TA获得超过1892个赞
知道小有建树答主
回答量:686
采纳率:50%
帮助的人:565万
展开全部
protected不光是子类访问限制,还有包访问限制.
你的A x = new B()肯定是在类B的包里面写的,那么先不管A x = new B()是什么意思.
只看A x ;这是A类引用无可置疑,那么引用一个什么呢?引用一个外包的对象new B(),这个对象里面有个 b(继承的),那么很自然x和new B()不在同一包,所以访问不到new B()的b

那么A x = new B();是什么意思?这是父类引用子类对象,是多态的一种表现.
多态你得看看,一言两语说不清楚.
现在来说,只要你看到接口引用引用实现类对象,父类引用引用子类对象,都是多态,这样有什么效果?你的所有实现类或者子类,可能根本不需要知道究竟有什么功能,但你始终会知道,接口或父类提供的功能.
坚高少A
2007-08-09 · TA获得超过294个赞
知道答主
回答量:196
采纳率:0%
帮助的人:129万
展开全部
子类可以访问父类的意思是:在子类的内部,可以对父类的变量进行访问。
因此,只有在B的内部,才可以访问到b。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式