【发布时间】:2011-01-15 17:18:44
【问题描述】:
我正在阅读 Sybex Complete Java 2 Certification Study Guide 2005 年 4 月 (ISBN0782144195)。本书适用于希望通过java认证的java开发者。
在关于访问修饰符(以及其他修饰符)的一章之后,我发现了以下问题(#17):
判断对错:如果类 Y 扩展 X班,两个班在 不同的包,X 类有一个 称为 abby() 的受保护方法,然后 Y 的任何实例都可以调用 abby() Y 的任何其他实例的方法。
这个问题让我有点困惑。
据我所知,您可以在同一类(或子类)的任何变量上调用受保护的方法。您不能在层次结构中高于您的变量上调用它(例如您实现的接口)。
例如,你不能仅仅因为你继承它而克隆任何对象。
但是这些问题没有提到变量类型,只提到了实例类型。
我有些疑惑,回答“是”。
书中的答案是
错误。从不同包中的超类继承受保护方法的对象可以在其自身上调用该方法,但不能在同一类的其他实例上调用。
这里没有关于变量类型,只有实例类型。
这很奇怪,我不明白。
谁能解释这里发生了什么?
【问题讨论】:
-
“我正在阅读 Sybex.Complete.Java.2.Certification.Study.Guide.Apr.2005.ISBN0782144195。”感谢海盗湾!
标签: java certificate access-modifiers protected