Java中的隐藏方法是什么?甚至 JavaDoc 的解释也令人困惑

2023-11-26

Javadoc says:

调用的隐藏方法的版本是超类中的版本,调用的重写方法的版本是子类中的版本。

没有给我敲响警钟。任何显示其含义的清晰示例都将受到高度赞赏。


public class Animal {
    public static void foo() {
        System.out.println("Animal");
    }
}

public class Cat extends Animal {
    public static void foo() {  // hides Animal.foo()
        System.out.println("Cat");
    }
}

Here, Cat.foo()据说隐藏Animal.foo()。隐藏不像重写那样工作,因为静态方法不是多态的。所以会发生以下情况:

Animal.foo(); // prints Animal
Cat.foo(); // prints Cat

Animal a = new Animal();
Animal b = new Cat();
Cat c = new Cat();
Animal d = null;

a.foo(); // should not be done. Prints Animal because the declared type of a is Animal
b.foo(); // should not be done. Prints Animal because the declared type of b is Animal
c.foo(); // should not be done. Prints Cat because the declared type of c is Cat
d.foo(); // should not be done. Prints Animal because the declared type of d is Animal

在实例而不是类上调用静态方法是一种非常糟糕的做法,永远不应该这样做。

将此与实例方法进行比较,实例方法是多态的,因此会被重写。调用的方法取决于对象的具体运行时类型:

public class Animal {
    public void foo() {
        System.out.println("Animal");
    }
}

public class Cat extends Animal {
    public void foo() { // overrides Animal.foo()
        System.out.println("Cat");
    }
}

然后会发生以下情况:

Animal a = new Animal();
Animal b = new Cat();
Cat c = new Cat();
Animal d = null;

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

Java中的隐藏方法是什么?甚至 JavaDoc 的解释也令人困惑 的相关文章

随机推荐

  • 如何从另一个java包读取文件(例如txt文件)而不指定绝对路径?

    我已将非 java 文件存储在包中 我想从此包中读取文件 而不指定文件的绝对路径 例如 C etc etc 我该怎么做 Use 获取资源作为流 例如 MyClass class getResourceAsStream file txt 即将
  • 对于 Windows 2008 Server IIS 7 和 7.5 中的 asp.net webapi,PUT 和 DELETE 返回 404

    我遇到500内部服务器错误 when PUT DELETE与 Windows 2008 服务器 IIS 我得到的回应是 div h1 Server Error h1 div div div
  • Android 使用 Smack 添加好友

    我对使用 smack 库和制作一个聊天应用程序很陌生 我已经弥补了很多 在这一步我想问两个问题 当我添加朋友时 朋友已添加到我的列表中 但没有任何通知发送给我添加的朋友 如何实现相同的效果 我添加了下面的代码 我想问的第二件事是 如何检查我
  • 使用 ASP 重复器创建 HTML 表,水平重复

    我正在尝试使用 ASP 转发器构建 HTML 表
  • PyInstaller .exe 文件不执行任何操作

    3天后 我无法将python程序打包成 exe文件 我尝试过 py2exe 它不断错过模块 和 PyInstaller 这是复杂的部分 我的程序使用了很多额外安装的模块 coopr pyomo openpyxl glpk cbc pyuti
  • Perl:linux 源代码中的 checkstack.pl 有何作用?

    我正在 Linux 内核中做一个项目 我想知道这个 checkstack pl 是做什么的 我从来没有学过perl所以无法理解这个程序 如果我能从概念上理解该程序 如果不是逐行 那就太好了 任何努力表示赞赏 Source 链接文本 假设我想
  • iOS 6 - UIActivityViewController 项目[重复]

    这个问题在这里已经有答案了 希望大家都知道 iOS 6 包含新风格ActionSheet UIActivityViewController The UIActivityViewController可以使用字符串 url 图像等参数启动 下面
  • NULL 是如何存储在数据库中的?

    我很想知道 NULL 是如何存储到数据库中的 它肯定取决于数据库服务器 但我想对此有一个总体了解 第一次尝试 假设服务器将未定义的值 可以是任何值 放入 NULL 值字段中 你能很幸运并用以下命令检索 NULL 值吗 WHERE field
  • 带有 Auth0 的 Angular2,我需要隐藏我的 ClientID 和域吗?

    我一直在使用Auth0构建我的网站的前端用户身份验证部分 但不确定我是否应该完全遵循文档 如果我想构建一个商业产品 我应该隐藏客户端 ID 和域吗 这会导致安全漏洞吗 目前任何人都可以查看我的 Angular2 源代码并查看客户端 ID 和
  • newSpellCheckerSession 始终返回 null

    我正在尝试连接我的 Note 平板电脑上内置的 Android 拼写检查服务 当我打电话时 final TextServicesManager tsm TextServicesManager getSystemService Context
  • 更改图像的特定区域并填充该区域的颜色

    编辑 Png 图像 例如 更改特定区域并填充该区域的颜色 我想仅更改选定区域的图像颜色 就像第一个用户选择颜色然后选择图像一样 之后他可以用所选颜色更改图像颜色的特定区域 之后他也可以保存该图像这可能吗 像Color公司的网站就用这种东西
  • 将文档作为参数传递给 Java 中的 XSL Translation

    我正在为我的 XSL 添加国际化功能 我见过很多创建dictionary xml 文件并通过document dictionary xml 将其加载到我的XSL 中的示例 我想做类似的事情 但我不想在磁盘上创建和存储dictionary x
  • Bootstrap 4 卡列宽度

    我正在使用文档中的代码创建一个包含 3 4 张卡片的卡片列布局 我只从一个开始 这是我的代码 div class card columns div class card img class card img top img fluid sr
  • 如何设置 PHP 回显文本的样式? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我有以下代码
  • iOS facebook sdk 如何下载相册、个人资料照片数据

    我想让我的 iPhone 应用程序用户查看并从他们的 Facebook 个人资料照片中选择 下载照片以用作个人资料图片 我目前正在使用Facebook SSO SDK并成功登录并访问Graph信息 已尝试使用以下方式访问照片信息 成功 SS
  • 如何获取重定向UDP报文的原始目的端口?

    Using 这东西我可以获得原始目的IP地址socket PF INET SOCK DGRAM 0 socket 如何获取原目的港 取决于重定向机制 如果您使用 REDIRECT 即底层的 NAT 则需要使用 SO ORIGINAL DST
  • 如何将 javascript 文件的服务限制为仅向经过身份验证的用户提供?

    我有一个 WebAPI 2 AngularJS SPA 应用程序 它使用 Identity 2 进行身份验证 我的代码在本地存储一个用于身份验证的令牌 我想实现一个功能 允许我的应用程序在下载初始 index html 页面后为经过身份验证
  • 游戏开发入门

    我想开始游戏开发 我读了很多文章 但没有走得太远 我正在学习计算机科学 并且有 C 经验 一个学期的 Java NET 甚至汇编程序 但我不会从那开始 我想开发 小型 游戏 例如俄罗斯方块 以及后来的某种跳跃和奔跑 我想从事视觉方面的工作
  • R:在 foreach %dopar% 中显示错误和警告消息

    我刚开始使用 foreach dopar 进行并行 并且对于它如何处理错误或警告有一些问题 当我在 foreach dopar 中使用 try 和自定义错误消息时 本机 错误消息不会显示 test lt function x if x 2
  • Java中的隐藏方法是什么?甚至 JavaDoc 的解释也令人困惑

    Javadoc says 调用的隐藏方法的版本是超类中的版本 调用的重写方法的版本是子类中的版本 没有给我敲响警钟 任何显示其含义的清晰示例都将受到高度赞赏 public class Animal public static void fo