java中为什么需要方法重载和重写? [复制]

2023-12-02

可能的重复:
多态、重写、重载

我很难知道为什么需要方法重载和覆盖在java中?

我读过一些关于此的文章,但无法理解为什么实际上需要它?

我还访问了 stackoverflow 中的以下网址,但我还不清楚这个主题。

Java 重载和覆盖

任何实际的例子将不胜感激。

提前致谢。


覆盖

Java文档 says:

子类中具有相同签名的实例方法(名称,加上 其参数的数量和类型)和返回类型 超类中的实例方法会覆盖超类的方法。

子类重写方法的能力允许类 从行为“足够接近”的超类继承,然后 根据需要修改行为。

覆盖是使用继承时可用的一项功能。

当从另一个类扩展的类想要使用父类的大部分功能并且想要在某些情况下实现特定功能时,可以使用它。

在这种情况下,我们可以创建与父类具有相同名称和签名的方法。这样,新方法就会屏蔽父方法并默认被调用。

class Thought {
    public void message() {
        System.out.println("I feel like I am diagonally parked in a parallel universe.");
    }
}

public class Advice extends Thought {
    @Override  // @Override annotation in Java 5 is optional but helpful.
    public void message() {
        System.out.println("Warning: Dates in calendar are closer than they appear.");
    }
}

超载

Java 中的重载是指创建多个同名但具有不同参数的方法的能力。

这样做的主要优点是代码的简洁性。

让我们以String.valueOf方法。该方法的重载版本定义为:

static String valueOf(boolean b) 
static String valueOf(char c) 
static String valueOf(char[] data) 
static String valueOf(char[] data, int offset, int count) 
static String valueOf(double d) 
static String valueOf(float f) 
static String valueOf(int i) 
static String valueOf(long l) 
static String valueOf(Object obj) 

这意味着如果我们有任何类型的变量,我们可以通过使用来获取它的字符串表示形式String.valueOf(variable).

如果不允许重载,我们会有类似这样的方法......

static String valueOfBoolean(boolean b) 
static String valueOfChar(char c) 
static String valueOfCharArray(char[] data) 
static String valueOfCharArrayWithOffset(char[] data, int offset, int count) 
static String valueOfDouble(double d) 
static String valueOfFloat(float f) 
static String valueOfInt(int i) 
static String valueOfLong(long l) 
static String valueOfObject(Object obj) 

...这比重载的解决方案非常丑陋且难以阅读。

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

java中为什么需要方法重载和重写? [复制] 的相关文章

随机推荐

  • 通过应用程序通过 HttpPost 登录网站

    你好 Stackoverflowers 我编写了一个相对简单的应用程序 由登录文本字段 密码文本字段和登录按钮组成 我的目标是 当用户输入登录信息并触摸登录按钮时 应用程序将使用户登录到我指定的网站 并以不同的意图或 WebView 打开它
  • 删除 SublimeText 中但匹配的所有文本

    我正在尝试删除 sublime 中除电子邮件之外的所有字符串 所以我可以寻找这样的电子邮件 a zA Z0 9 a zA Z0 9 a zA Z0 9 但我该如何删除其他所有内容呢 Thanks 您可以执行以下操作 Use your reg
  • 如何制作一个flex(词法扫描器)来读取UTF-8字符输入?

    看起来flex不支持UTF 8输入 每当扫描器遇到非 ASCII 字符时 它就会停止扫描 就像它是 EOF 一样 有没有办法强制 Flex 吃掉我的 UTF 8 字符 我不希望它实际匹配 UTF 8 字符 只需在使用 时吃掉它们即可图案 有
  • 浮动:右反转跨度的顺序

    我有 HTML div span class label a href index 1 Bookmix Offline a span span class button a href settings Settings a span spa
  • 仅使用 print 语句进行调试

    最近我用 Python 编写了很多代码 我一直在处理以前从未使用过的数据 使用以前从未见过的公式并处理巨大的文件 所有这些让我写了很多打印语句来验证一切是否正常并找出故障点 但是 一般来说 输出这么多信息并不是一个好的做法 如何仅在我想要调
  • 有人可以解释一下 Shell Shock Bash 代码吗? [复制]

    这个问题在这里已经有答案了 我在理解以下代码时遇到问题 该代码是 Shell Shock 的 漏洞证明 代码 有人可以向我解释一下吗 特别是这部分 env x echo vulnerable bash c echo this is a te
  • 如何让视图永远旋转?

    有没有办法让视图以指定的速度永远旋转 我需要它来作为指标之类的东西 我知道有一个奇怪的 Lxxxxx00ff 常量 记不太清了 代表 永远 您可以使用HUGE VAL对于浮动值 如果我没记错的话 动画的repeatCount属性是一个浮动值
  • 如何判断 ASP 中的页面卸载是否为回发

    这似乎是一个常见问题 但搜索没有返回任何内容 我在页面卸载之前执行以下代码 问题是 如果卸载是回发 我不想向用户发出警告 但我无法弄清楚如何区分回发和用户导航到例如另一页 This is executed before the page a
  • 即使成功创建对象后,django modelformset_factory 仍保留先前提交的数据

    我在我的观点之一中使用 django modelformset factory 我正在使用 javascript 将新表单添加到模板中的表单集 一切工作正常 但我的问题是 当我尝试使用 modelformset factory 创建一个新对
  • iPhone - 捕获设备按钮按下

    我知道您无法从应用程序内控制设备音量 但我希望设备音量能够影响应用程序中的 UIScrollBar 来控制音量 我知道这是可能的 因为 Last fm 应用程序可以做到这一点 我想实现此行为 我在互联网上能找到的信息很少 这里有人可以帮助我
  • iOS 版 Appium 的代码覆盖率

    这个问题似乎已经以多种不同的方式被问到了 所以如果我在这里遗漏了一些明显的东西 请提前道歉 但这对我来说仍然不清楚 我正在使用 Appium 作为功能测试套件的一部分来运行 UIAutomation 测试 如何从该套件生成代码覆盖率指标 理
  • Java 和 HID 通信

    我正在寻找为简单的无线 HID 接口设备编写一个 Linux Windows Mac Java HID 控制器 我对 USB4Java LibUsb 库进行了修改 但没有成功 我已经转向 JavaHIDAPI 的方向 不幸的是 对我来说 除
  • 如何在 SQL (Excel) 中传递参数进行查询

    我将 Excel 链接 到 Sql 它工作得很好 我编写了一些 SQL 脚本 它工作得很好 我想做的就是将参数传递给查询 就像每次刷新一样 我希望能够将参数 过滤条件 传递给 Sql 查询 在 连接属性 中 参数按钮被禁用 所以我无法进行参
  • Spring cron 与普通 cron 比较?

    我试图让 cron 作业在遗留的 Java Spring Hibernate 项目中工作 所以我决定使用 spring 调度程序 我希望 myTask doStuff 在每月第一个星期日的 12 00 运行 在我的 application
  • 二分查找,终止条件为“left < right”,步长更新为“left = mid +1,right = mid”

    我正在读leetcode中的二分查找模板二 它用于搜索需要的元素或条件访问当前索引及其直接右邻居的索引在数组中 def binarySearch nums target type nums List int type target int
  • Java并发修改异常

    我编写了以下代码 导致并发修改异常 我该如何预防呢 这个想法是转义 Map 的所有值并使用新的参数映射重建对象 dO try Map
  • 删除列标签的背景颜色,同时保留绘图背景颜色 ggpairs

    我定义了一个函数来设置 ggpairs 中的背景 以匹配两个变量之间的相关程度 但是 我还想从沿图外部运行的变量标签中删除灰色背景 但如果不删除相关颜色 我就无法做到这一点 library GGally Loads some data mt
  • 在cuda中求对数

    如何在cuda中找到对数 我正在寻找设备功能 Thanks 您可以使用 logf x logf x log2f x log2f x log10f x log10f x 取自CUDA 编程指南 附录 D
  • 在cuda中分配结构数组后变量丢失

    我有一个用 C 语言编写的结构体 其中包含结构体数组 我需要在 GPU 中复制该结构体 为此 我正在编写一个函数 使一些cudaMalloc and cudaMemcpy从主机到设备的结构体中的变量 该结构的一个简单版本 真正的版本内部有各
  • java中为什么需要方法重载和重写? [复制]

    这个问题在这里已经有答案了 可能的重复 多态 重写 重载 我很难知道为什么需要方法重载和覆盖在java中 我读过一些关于此的文章 但无法理解为什么实际上需要它 我还访问了 stackoverflow 中的以下网址 但我还不清楚这个主题 Ja