帮助理解受保护方法的问题

2023-11-22

我正在阅读Sybex 完整 Java 2 认证学习指南 2005 年 4 月(ISBN0782144195)。本书适合想要通过java认证的java开发人员。

在了解访问修饰符(以及其他修饰符)一章之后,我发现了以下问题(#17):

对或错:如果 Y 类扩展 X班,两个班在 不同的包,并且 X 类有一个 受保护的方法称为 abby(),然后 Y 的任何实例都可以调用 abby() Y 的任何其他实例的方法。

这个问题让我有点困惑。

据我所知,您可以在同一类(或子类)的任何变量上调用受保护的方法。您不能在层次结构中比您更高的变量上调用它(例如您实现的接口)。

例如,您不能仅仅因为继承了任何对象而克隆它。

但这些问题没有提到变量类型,只提到实例类型。

我有点困惑,回答“是”。

书上的答案是

错误的。从不同包中的超类继承受保护方法的对象可以在其自身上调用该方法,但不能在同一类的其他实例上调用该方法。

这里没有关于变量类型的内容,只有关于实例类型的内容。

这很奇怪,我不明白。

有人能解释一下这是怎么回事吗?


对或错:如果类 Y 扩展类 X,这两个类位于不同的包中,并且类 X 有一个名为 abby() 的受保护方法,则 Y 的任何实例都可以调用 Y 的任何其他实例的 abby() 方法。

“错误。从不同包中的超类继承受保护方法的对象可以在其自身上调用该方法,但不能在同一类的其他实例上调用该方法”。

让我们把它写下来,就像BalusC做了,并向 Y 添加一个调用 Y 任何其他实例的 abby() 的方法:

package one;
public class X {
    protected void abby() {
    }
}

package other;
import one.X;
public class Y extends X {
    public void callAbbyOf(Y anyOther) {
        anyOther.abby();
    }
}

It isY 可以调用 Y 任何实例的 abby() 方法它有一个参考. 所以书上的答案是明显错误的。Java 没有特定于实例的作用域(与具有实例私有作用域的 Scala 不同)。

如果我们试着仁慈一点,也许这个问题的意思是“anyY 的其他实例”,它可以访问以下方法恰好在内存中的 Y 的任何实例- 这是不可能的,因为 Java 没有直接内存访问。但在这种情况下,这个问题的措辞非常糟糕,您甚至可以回答:“错误。您不能在不同 JVM 上的实例、已被垃圾收集的实例或已死亡的 JVM 上的实例上调用方法。”一年前等等。”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

帮助理解受保护方法的问题 的相关文章

  • 仅运行相应源代码已更改的单元测试?

    我正在 Jenkins CI 服务器中运行单元测试和 Selenium 测试 众所周知 在大型项目中测试需要很长时间才能运行 Java 是否有一个工具 框架只能触发其源代码已更改的测试 这是因为并非每次对 SCM 的提交都会影响源代码的所有
  • 在 Spark 中写入 JSON 时保留具有空值的键

    我正在尝试使用 Spark 编写 JSON 文件 有一些键有null作为价值 这些在中显示得很好DataSet 但是当我写入文件时 密钥会丢失 我如何确保它们被保留 写入文件的代码 ddp coalesce 20 write mode ov
  • 合并 2 个 .jks 信任库文件

    我正在使用启用了 SSL 的 Tomcat 并使用信任库进行客户端身份验证 我有两个 jks trustore 文件 第一个 我将其用于 PROD 环境 另一个用于 TEST 环境客户端证书 我在 Tomcat 上部署了 Web 应用程序
  • 配置 Eclipse 将 App Engine 类预先捆绑到单个 JAR 中以加快预热速度

    在与另一家同样使用 App Engine 的公司的同事进行讨论后 他告诉我 他通过以下步骤成功地将应用程序预热时间从约 15 秒缩短到约 5 秒 配置 Eclipse 将编译过程中生成的类捆绑到单个 JAR 文件中 配置 Eclipse 以
  • 如何创建仅接受字母数字字符的正则表达式? [复制]

    这个问题在这里已经有答案了 可能的重复 字母数字和下划线的正则表达式 https stackoverflow com questions 336210 regular expression for alphanumeric and unde
  • Maven项目中的HDF5

    我正在尝试将 hdf hdf5lib H5 导入到 NetBeans 中的 Maven 项目中 它有这个作为导入行 import hdf hdf5lib H5 正如这里所建议的 https support hdfgroup org prod
  • 将更改(永久)保存在数组列表中?

    那可能吗 例如 用户将新的项目 元素添加到数组列表 缓冲读取器进程 中 并且肯定会发生更改 我的问题是 即使用户多次更改数组列表 它也可能会永久存在 即使他们关闭程序并再次打开它 它也会一直存在 注意 不使用 txt 很抱歉问这样的问题 但
  • 内部/匿名类的最佳实践[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 匿名类和静态内部类的最佳实践 设计和性能方面 是什么 就我个人而言 我认为静态内部类提供了更好的封装 并且应该提供更好的性能 因为它们无法访问类
  • 如何在 Java 中复制对象?

    考虑下面的代码 DummyBean dum new DummyBean dum setDummy foo System out println dum getDummy prints foo DummyBean dumtwo dum Sys
  • Hibernate更新查询问题

    对于此更新查询 update TestDB dbo MyEmp set empname where empid 我在 DAO 课上写的 MyEmployee myEmployee new MyEmployee MyEmployee myEm
  • 覆盖乔达一周的第一天?

    是否有可能覆盖乔达弱的第一天sunday 因为 Joda 使用Monday作为一周的第一天 如果有办法的话 谁能解释一下 我在 SOF 中提到了以下主题 乔达时间 一周的第一天 https stackoverflow com questio
  • 在休眠搜索中使用现有分析器AnalyzerDiscriminator

    Entity Indexed AnalyzerDefs AnalyzerDef name en tokenizer TokenizerDef factory StandardTokenizerFactory class filters To
  • 错误包括 bouncycastle 提供商

    我需要使用bouncycastle provider我的项目中的库 我已将其包含在 gradle 项目中 apply plugin application sourceCompatibility 1 6 version 1 0 0 main
  • 更改JavaFX TableView字体大小[重复]

    这个问题在这里已经有答案了 您好 我想在表视图列内的文本上设置字体 我如何用 Java 做到这一点 这是我的代码 感谢帮助 private final TableView
  • 将序列化数据发送到 servlet 时出现 java.io.EOFException

    我正在尝试从 Java 本地应用程序上传一个包含文件到服务器的对象 我的计划是 在 tomcat 上运行的 servlet 将使用以下方法获取对象ObjectInputStream in the doGet方法 但我得到一个EOFExcep
  • 为什么我无法使用 HttpUrlConnection 上传第一个文件块?

    在我的项目中 我应该从一台服务器逐块下载文件 并将每个块立即上传到另一台服务器 我有一个应该下载的文件的 URL 我们就这样称呼它吧downloadUrl 因此 这就是我逐块下载文件的方式 val chunkSize 1024 1024 B
  • Java泛型类型参数中的问号是什么意思? [复制]

    这个问题在这里已经有答案了 这是取自斯坦福解析器附带的一些示例的一小段代码 我已经用 Java 进行了大约 4 年的开发 但从未对这种风格的代码应该表示什么有非常深入的理解 List
  • 如何使用 iBatis (myBatis) 的注释进行 IN 查询?

    我们只想在 MyBatis 中使用注释 我们确实在努力避免使用 xml 我们尝试使用 IN 子句 Select SELECT FROM blog WHERE id IN ids List
  • SWT StyledText 有高度限制吗?

    我正在尝试创建一个应用程序 其中包含在 ScrolledComposite 中显示的 StyledText 框 我在 StyledText 框中显示大量行时遇到困难 超过 2 550 行似乎会导致问题 StyledText 框本身不能有滚动
  • 如何将元素添加到通用集合

    我想知道如何将专用对象添加到通用集合中 我正在使用以下代码 Collection

随机推荐

  • 似乎无法覆盖 Magento 中的结帐控制器

    我正在尝试对 Magento 商店中的 Checkout 控制器进行一些更改 但是 当我尝试将控制器文件放入本地目录时 它似乎并不尊重本地文件 我已经检查过这些文件是否位于各自代码池中的同一位置 并且这些文件的名称相同 但它只是不会这样做
  • 在动态元素上使用 .on() 和 e.stopPropagation()

    我一直在尝试使用捕获元素之外的点击事件stopPropagation container children on click function e e stopPropagation container on click function
  • 将使用 S3 类的包转换为 S4 类,性能会下降吗?

    我有一个当前使用的 R 包S3类系统 具有两个不同的类和几种用于通用 S3 函数的方法 例如plot logLik and update 用于模型公式更新 由于我的代码由于所有有效性检查而变得更加复杂if else结构 因为没有基于两个参数
  • Malloc 分段错误

    这是发生分段错误的代码段 未调用 perror job malloc sizeof task t if job NULL perror malloc 更准确地说 gdb 说segfault发生在一个 int malloccall 这是一个子
  • 使用 JavaScript 滚动到页面顶部?

    如何使用 JavaScript 滚动到页面顶部 立即跳转到页面顶部的滚动条也是理想的 因为我不希望实现平滑滚动 如果您不需要更改动画 那么您不需要使用任何特殊插件 我只需使用本机 JavaScriptwindow scrollTo 方法 传
  • 如何检查给定进程在运行时加载了哪些共享库?

    有没有办法检查正在运行的进程使用哪些库 更具体地说 如果程序使用以下方式加载一些共享库dlopen 那么 readelf 或 ldd 将不会显示它 是否有可能从正在运行的进程中获取该信息 如果是 怎么办 其他人都走在正确的道路上 这里有几种
  • 带有 Groovy 'with' 闭包的重复 try-catch 块?

    我有以下 Groovy 课程 Slf4j class WidgetService WidgetDao widgetDao new WidgetDao createWidget String name int type try widgetD
  • 在 Angular 中取消转义 html 实体的正确方法是什么?

    我从 json 文件获取 html 实体 例如 8217 如何在 html 组件中取消转义它 我创建了自定义管道 但它仅适用于像 amp import Pipe PipeTransform from angular core import
  • 异步 ReadDirectoryChangesW - GetQueuedCompletionStatus 总是超时

    正如听起来的那样 我正在尝试异步ReadDirectoryChangesW使用 IO Completion 并且它不起作用 具体来说 GetLastError重复返回 258 GetQueuedCompletionStatus暂停 我有结构
  • R 中带有 rCharts 的 nvd3 scatterPlot:不同大小的点?

    我已经使用 rCharts 和 nvd3 一段时间了 现在 我需要一个气泡图 或者至少需要一个散点图 其中点的大小取决于数据中的变量 从这个例子 看来有可能 rCharts 中散点图的示例是 library rCharts p1 lt nP
  • java中int.class和Integer.TYPE有什么区别? [复制]

    这个问题在这里已经有答案了 我想知道Java中int class和Integer TYPE的区别 绝对没有 如果运行以下代码 您将看到int class是一样的Integer TYPE public class Test public st
  • 如何计算安卓手机电池的剩余时间? [复制]

    这个问题在这里已经有答案了 我正在 Android Studio 上开发电池健康应用程序 我想知道如何计算播放音乐或视频 浏览网站或待机的剩余时间 我见过很多这样的android应用程序 但看不到源代码 我想查看计算播放音乐或视频等剩余时间
  • 如何在 Python 中将 JSON 文件的目录加载到 Apache Spark 中

    我对 Apache Spark 比较陌生 我想从保存在多个 JSON 文件中的字典列表 每个文件都经过 gzip 压缩并包含字典列表 在 Python 中创建单个 RDD 粗略地说 生成的 RDD 将包含组合成单个字典列表的所有字典列表 我
  • 在IE中Hook http/https协议导致GET请求是顺序的

    我正在使用通行APP方法挂钩 IE 发出的 HTTP HTTPS 请求 它在大多数情况下运行良好 但我注意到一个问题 一次只有一个下载线程处于活动状态 通常 IE 使用两个下载线程 我可以看到创建了两个 IInternetProtocol
  • 有哪些技术可以限制 C++ 项目中的编译依赖性?

    在 C 项目中 编译依赖项会使软件项目难以维护 限制模块内和模块间依赖关系的最佳实践有哪些 转发声明 抽象接口 皮普尔习语
  • 显示测试结果 使用 TFS api 形成测试套件

    我正在参与一个学校项目 我将在其中分析公司的缺陷数据库 他们正在使用 Microsoft Foundation Server TFS 我对 TFS 和 TFS api 很陌生 我在使用 TFS 客户端对象模型从 TFS 获取正确数据时遇到一
  • Android:如何加快 GridView 的滚动速度?

    我有一个 GridView 它显示大小相同的图像 7 列图像 166dp x 249dp 有超过 150 个图像 并且我通过视图持有者模式使用视图回收机制适配器 我的视图都是简单的 ImageView 没有太多事情会减慢这个小部件的滚动速度
  • Boost.MultiArray 的一行初始化程序

    我有一个 n 维 Boost MultiArray 我初始化如下 const int n 3 size 4 of dimensions and size of one dimension boost multi array
  • 选择除顶行之外的所有行[重复]

    这个问题在这里已经有答案了 如何返回表中除第一行之外的所有行 这是我的sql语句 Select Top TopWhat from tbl SongsPlayed where Station Station order by DateTime
  • 帮助理解受保护方法的问题

    我正在阅读Sybex 完整 Java 2 认证学习指南 2005 年 4 月 ISBN0782144195 本书适合想要通过java认证的java开发人员 在了解访问修饰符 以及其他修饰符 一章之后 我发现了以下问题 17 对或错 如果 Y