Java 重载和覆盖

2023-12-28

我们总是说方法重载是静态多态,重写是运行时多态。这里的静态到底是什么意思?对方法的调用是否在编译代码时解析?那么普通方法调用和调用final方法有什么区别呢?编译时链接的是哪一个?


方法重载意味着根据输入创建函数的多个版本。例如:

public Double doSomething(Double x) { ... }
public Object doSomething(Object y) { ... }

调用哪个方法的选择是在编译时做出的。例如:

Double obj1 = new Double();
doSomething(obj1); // calls the Double version

Object obj2 = new Object();
doSomething(obj2); // calls the Object version

Object obj3 = new Double();
doSomething(obj3); // calls the Object version because the compilers see the 
                   // type as Object
                   // This makes more sense when you consider something like

public void myMethod(Object o) {
  doSomething(o);
}
myMethod(new Double(5));
// inside the call to myMethod, it sees only that it has an Object
// it can't tell that it's a Double at compile time

方法重写意味着通过原始方法的子类定义该方法的新版本

class Parent {
  public void myMethod() { ... }
}
class Child extends Parent {
  @Override
  public void myMethod() { ... }
}

Parent p = new Parent();
p.myMethod(); // calls Parent's myMethod

Child c = new Child();
c.myMethod(); // calls Child's myMethod

Parent pc = new Child();
pc.myMethod(); // call's Child's myMethod because the type is checked at runtime
               // rather than compile time

我希望这有帮助

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

Java 重载和覆盖 的相关文章

随机推荐

  • iPad/iPhone 上的咆哮类型通知?

    iPad iPhone 上的咆哮类型通知 我想在 iPad 应用程序顶部显示非模式 非弹出通知 Growl 是一个 Mac OS X 程序 它会在屏幕一角显示一些小弹出窗口 这些窗口会在一段时间后消失 或者上面有一个小 x 以便更快关闭 H
  • 修复共享元素过渡动画显示不佳的问题

    我正在尝试在两个具有共享元素的活动之间创建共享元素过渡动画ImageView 第一个有一个RecyclerView使用项目单击侦听器 单击后 它应该通过转换启动另一个活动 关闭已启动的活动时动画效果良好 但启动活动时则不然 点击该项目后Re
  • 使用 Spring Security + CAS 进行循环重定向,但应该可以工作

    我正在尝试将基本应用程序从仅使用 Spring Security 更改为使用 CAS 以启用 SSO 但我在某个地方遇到了重定向循环 并且我无法找出问题所在 我还制作了另外两个模拟应用程序 在 CAS 上没有问题 因为它们正在工作 我使用
  • 将灰度转换为黑白的最佳阈值

    自动找出将灰度图像转换为黑白图像的最佳阈值的最佳方法是什么 我可以手动计算出相当好的阈值 但我想自动选择阈值 编辑 我已经阅读了一些有关这个问题的内容 通过查看图像的直方图可以有所帮助 例如如果图像具有双模态直方图 那么在模式之间选择阈值似
  • 以编程方式应用于按钮时,样式无法完全工作[重复]

    这个问题在这里已经有答案了 这是我的风格
  • 会话 VS 温度饼干

    我是在想 在 PHP 中设置没有过期的 cookie 意味着它会在浏览器关闭时过期 和设置会话变量有什么区别 我不是在谈论登录之类的事情 而不需要在每次页面访问时获取不经常更改的数据库值等 P S 您可以通过使用来更好地保护您的cookie
  • 如何在 Angular 中使用“routerLink”启用“ctrl+click”

    在 Angular 中 如果你使用这个 div img src div 当我按图像时 它会完美路由 我想按 ctrl 单击 在新选项卡中打开此链接 或将此图像拖动到新选项卡 但是当我按 ctrl 单击 时 它会在同一页面中打开 如果我拖动它
  • CSS 依赖于 ActiveX?

    只要启用了 ActiveX 我的页面就可以在 FF Chrome Safari 甚至 IE8 中运行 链接已删除 为了让 CSS3 功能 旋转 不透明度 文本阴影 在 IE8 中工作 我必须使用 ActiveX 过滤器 我的问题是 当您第一
  • Android - 通过服务器端验证保护应用内购买

    我是 Android 开发新手 但创建了一个应用程序 并实现了应用程序内购买以从应用程序中删除广告 我只是做了一个非常基本的实现 我基本上检查用户是否购买了 no ads 项目 如果是真的 则不会显示广告 问题是我看到很多 购买 记录在 f
  • Eclipse 无法通过代理连接到互联网

    我的 eclipse juno 4 2 centos 5 6 无法连接到互联网 完全没有 我有一个代理服务器设置 我看了一下Eclipse 无法连接到互联网 https stackoverflow com questions 7778484
  • NetworkX 从特定节点删除属性

    我在使用 python 中的 networkX 库时遇到问题 我建立了一个图表 用属性初始化一些节点 边 我还开发了一种方法 可以动态地将具有特定值的特定属性添加到目标节点 例如 def add tag self G fnode attr
  • 带 bo​​ost 的 C++11 占位符

    这段代码 int main using namespace std placeholders ClassA a ClassB b b2 a SigA connect std bind ClassB PrintFoo b a SigB con
  • Android 蓝牙 - 如何启动配对

    我想向非 Android 设备发起配对请求 此时不是连接 这可以在 设置应用程序 gt 网络 gt 蓝牙设置 gt 扫描后单击设备 中找到 两台设备上都会出现一个带有 6 位 PIN 码的弹出窗口 根据 Android 的文档 如果我这样做
  • 如何在 Go 中访问 Kubernetes API 并运行 kubectl 命令

    我想在 Go 中访问我的 Kubernetes 集群 API 来运行kubectl命令获取在谷歌云上运行的 k8s 集群中的可用命名空间 我的唯一目的是通过运行来获取集群中可用的命名空间kubectl命令 请告诉我是否有其他选择 你可以从k
  • 如何从cookie中获取Web Session?

    我正在尝试抓取网页 但为了发布数据 我需要一个网络会话 ID 例如 web session HQJ3G1GPAAHRZGFR 我怎样才能得到那个ID 到目前为止我的代码是 Private Sub test Dim postData As S
  • “my_app.app/ResearchKit/ResearchKit/Info.plist”处的捆绑包不包含捆绑包可执行文件

    UpdateXCode 版本 8 2 iOS 目标 9 希望有人能向我指出这不是一个错误 非常简单 我提取了最新稳定版本的 researckKit 然后将 xcodeproj 文件放入我的新 iOS 项目中 添加了嵌入式二进制文件 我创建了
  • 为什么 std::cin 字符串输入要求我输入每个空格

    这周我开始研究 C 中的文本文件 在练习中我必须编写一个程序 让用户在文件中输入行 但是 对于用户输入的每个空格 程序都会向用户询问新的空格 这是我的代码 include
  • Android 无法恢复密钥

    我在 Android Studio 中恢复密钥时出错 我知道密钥别名 并且拥有两者的正确密码 我知道这一点是因为我能够运行 keytool list v keystore mykeystore jks alias myKey storepa
  • Rhandsontable 条件格式 - 如何根据特定属性值突出显示行?

    我想根据值对整行应用颜色突出显示 并保留 rhandsontable 的复选框功能 在下面的简单示例中 我希望第 3 行为粉色 第 4 行为绿色 library rhandsontable DF data frame bool TRUE v
  • Java 重载和覆盖

    我们总是说方法重载是静态多态 重写是运行时多态 这里的静态到底是什么意思 对方法的调用是否在编译代码时解析 那么普通方法调用和调用final方法有什么区别呢 编译时链接的是哪一个 方法重载意味着根据输入创建函数的多个版本 例如 public