每日一知识点- Java 方法重载和方法重写

目录

  • 📝 每日一知识点
    • 方法重载
    • 方法重写
  • 📎 参考文章

😀 准备好了吗?让我们一起步入这座Java神奇的城堡,揭开方法重载(Overloading)和方法重写(Overriding)的神秘面纱。

📝 每日一知识点

方法重载

方法重载指的是在同一个类中,可以定义多个方法名相同,但参数不同的方法。这些方法的返回类型可以相同也可以不同,但参数列表必须不同(参数个数不同或参数类型不同)。

特点:

  • 方法名相同。

  • 参数列表不同(参数个数或参数类型不同)。

  • 返回类型可以相同也可以不同。

    如果两个方法方法名相同,参数列表和类型也相同,返回类型不同,这同样会报错。(编译器并不知道该调用返回哪一个方法)

    在这里插入图片描述

方法的返回值只是作为方法运行后的一个状态,它是保持方法的调用者和被调用者进行通信的一个纽带,但并不能作为某个方法的‘标识’

  • 可以有不同的访问修饰符。
class MathOperations {// 加法方法,接收两个整数public int add(int a, int b) {return a + b;}// 加法方法,接收三个整数public int add(int a, int b, int c) {return a + b + c;}// 加法方法,接收两个浮点数public double add(double a, double b) {return a + b;}
}public class Main {public static void main(String[] args) {MathOperations math = new MathOperations();// 调用不同的重载方法System.out.println("两个整数相加: " + math.add(2, 3));        // 输出: 两个整数相加: 5System.out.println("三个整数相加: " + math.add(2, 3, 4));    // 输出: 三个整数相加: 9System.out.println("两个浮点数相加: " + math.add(2.5, 3.5)); // 输出: 两个浮点数相加: 6.0}
}

Main方法重载

main方法也可以重载。只不过,Java 虚拟机在运行的时候只会调用带有 String 数组的那个 main() 方法。

public class OverloadingMain {public static void main(String[] args) {System.out.println("String[] args");}public static void main(String args) {System.out.println("String args");}public static void main() {System.out.println("无参");}
}

参数类型转换

在方法重载中,参数类型转换是指Java会根据传入参数的类型自动选择最合适的方法。如果没有完全匹配的方法,Java编译器会尝试通过自动类型转换来匹配方法。例如,int可以自动转换为longfloat可以自动转换为double

在这里插入图片描述

public class OverloadingTypePromotion {void sum(int a, long b) {System.out.println(a + b);}void sum(int a, int b, int c) {System.out.println(a + b + c);}public static void main(String args[]) {OverloadingTypePromotion obj = new OverloadingTypePromotion();obj.sum(20, 20);obj.sum(20, 20, 20);}
}
//第二个 20 向上转型为 long

方法重写

方法重写指的是子类重新定义父类中已经定义的方法。重写的方法必须与被重写的方法具有相同的方法名、参数列表和返回类型。方法重写用于实现多态性(Polymorphism)。

特点:

  • 方法名相同。

  • 参数列表相同。

  • 返回类型相同。

  • 访问修饰符不能比父类方法的访问修饰符更严格。

    • 如果被重写的方法是 default,那么重写的方法可以是 default、protected 或者 public。

    • 如果被重写的方法是 protected,那么重写的方法只能是 protected 或者 public。

    • 如果被重写的方法是 public, 那么重写的方法就只能是 public。

  • 子类方法不能抛出比父类方法更多的异常。

注意点:

  • 方法重写只能重写从父类继承过来 public、protected 或者 default 修饰的方法。

  • final、static 的方法不能被重写。(静态方法可用于父类以及子类的所有实例。)

  • 构造方法不能被重写。

  • 如果一个类继承了抽象类,抽象类中的抽象方法必须在子类中被重写。

  • synchronized 、strictfp 关键字对重写规则没有任何影响。

class Animal {// 父类中的方法public void makeSound() {System.out.println("动物发出声音");}
}class Dog extends Animal {// 重写父类的方法@Overridepublic void makeSound() {System.out.println("狗叫: 汪汪");}
}class Cat extends Animal {// 重写父类的方法@Overridepublic void makeSound() {System.out.println("猫叫: 喵喵");}
}public class Main {public static void main(String[] args) {Animal myDog = new Dog();Animal myCat = new Cat();// 调用重写的方法myDog.makeSound(); // 输出: 狗叫: 汪汪myCat.makeSound(); // 输出: 猫叫: 喵喵}
}

📎 参考文章

  • 二哥的进阶之路

  • 菜鸟教程

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1488882.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于迁移学习的手势分类模型训练

1、基本原理介绍 这里介绍的单指模型迁移。一般我们训练模型时,往往会自定义一个模型类,这个类中定义了神经网络的结构,训练时将数据集输入,从0开始训练;而迁移学习中(单指模型迁移策略)&#x…

一文掌握YOLOv1-v10

引言 YOLO目标检测算法,不过多介绍,是基于深度学习的目标检测算法中最出名、发展最好的检测器,没有之一。本文简要的介绍一下从YOLOv1-YOLOv10的演化过程,详细技术细节不过多介绍,只提及改进点,适合初学者…

Vue3二次封装axios

官网: https://www.axios-http.cn/docs/interceptors steps1: 安装 npm install axios -ssteps2: /src/api/request.js 文件 >>> 拦截器 import axios from axios // 如果没用element-plus就不引入 import { ElMessage } from element-plusconst service axios.cre…

7月22日学习笔记 文件共享服务nfs,SAMBA文件共享与DNS域名服务

任务背景 由于业务驱动,为了提⾼⽤户的访问效率,现需要将原有web服务器上的静态资源 ⽂件分离出来,单独保存到⼀台⽂件服务器上。 任务要求 1. ⼀台应⽤服务器web-server部署apache,静态⽹⻚资源存放在另外⼀台NFS服 务器上 …

四、GD32 MCU 常见外设介绍 (2) GPIO 模块介绍

2.GPIO 模块介绍 GPIO的全称为通用输入输出口,是很多外设能够正常工作的必要条件。除了一些特定功能的引脚(如电源脚)外,MCU上其他的引脚都可以当做GPIO来使用。本章,我们将对GPIO进行简单介绍,并通过一个“流水灯”的实验来熟悉…

MATLAB基础:数组及其数学运算

今天我们继续学习MATLAB中的数组 我们在学习MATLAB时了解到,MATLAB作者秉持着“万物皆可矩阵”的思想企图将数学甚至世间万物使用矩阵表示出来,而矩阵的处理,自然成了这门语言的重中之重。 数组基础 在MATLAB中,数组是一个基本…

【人工智能 | 机器学习 | 理论篇】线性模型

文章目录 1. 基本形式2. 线性回归3. 对数几率回归4. 线性判别分析5. 多分类学习6. 类别不平衡问题 1. 基本形式 设有 d 个属性描述的示例 x ( x 1 , x 2 , x 3 , . . . , x d ) x ({x_1, x_2, x_3, ..., x_d}) x(x1​,x2​,x3​,...,xd​) 线性模型(linear mode…

使用C#手搓Word插件

WordTools主要功能介绍 编码语言:C#【VSTO】 1、选择 1.1、表格 作用:全选文档中的表格; 1.2、表头 作用:全选文档所有表格的表头【第一行】; 1.3、表正文 全选文档中所有表格的除表头部分【除第一行部分】 1.…

Android AI应用开发:移动检测

基于Google ML模型的Android移动物体检测应用——检测、跟踪视频中的物体 A. 项目描述 ML Kit物体检测器可以对视频流进行操作,能够检测视频中的物体并在连续视频帧中跟踪该物体。 相机捕捉视频时,检测到移动物体并为其生成一个边界框,并分…

【性能测试-登录时密码加密存储如何传参】

目的】 登录接口,密码加密传输,开发不做处理的情况下,密码如何加密传输 【方案】 使用前置处理器:JSR223 预处理程序,主要是在执行登录接口前将密码按照加密算法获得对应的加密密码,并传入接口 【说明】前…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 亲子游戏(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

【BUG】已解决:TypeError: a bytes-like object is required, not ‘str‘

TypeError: a bytes-like object is required, not ‘str‘ 目录 TypeError: a bytes-like object is required, not ‘str‘ 【常见模块错误】 【解决方案】 错误原因分析 解决方案 示例代码 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998https://bbs.csdn.net…

基于扩散的生成模型的语音增强和去噪

第二章 目标说话人提取之《Speech Enhancement and Dereverberation with Diffusion-based Generative Models》 文章目录 前言一、任务二、动机三、挑战四、方法1.方法:基于分数的语音增强生成模型(sgmse)2.网络结构 五、实验评价1.数据集2.采样器设置和评价指标3.基线模型4.评…

PaliGemma:A versatile 3B VLM for transfer

1.model 1.1 Architecture 图像分辨率为固定的正方形,224,448,896,这导致每种模型都有固定数量的图像token,256,1024,4096。图像在最前面,无需特殊的位置标记,BOS标记文本的开始,\n作为SEP token,不出现在前缀中,单独对SEP进行标记,以避免它与前缀的结束或后缀的…

力扣94题(java语言)

题目 思路 使用一个栈来模拟递归的过程,以非递归的方式完成中序遍历(使用栈可以避免递归调用的空间消耗)。 遍历顺序步骤: 遍历左子树访问根节点遍历右子树 package algorithm_leetcode;import java.util.ArrayList; import java.util.List; import…

立仪光谱共焦传感器应用测量之:汽车连接器高度差测量

01 检测要求,要求测量汽车连接器的高度差 02 检测方式 根据观察,我们采用立仪科技光谱共焦H4UC控制器搭配D65A52系列镜头,角度最大,外径最大,量程大,可以有效应用于测量弧面,大角度面等零件。 0…

SAPUI5基础知识19 - 视图嵌套(Nested Views)

1. 背景 SAPUI5 是一个用于构建企业级 Web 应用程序的 JavaScript 框架。它提供了丰富的 UI 控件和工具,帮助开发者创建复杂的用户界面。Nested Views 是 SAPUI5 中的一种设计模式,允许在一个视图中嵌套另一个视图。这种模式有助于模块化和重用代码&…

什么是反射以及反射的应用及例子

反射是Java中框架设计的核心,通过对类的构造、属性、方法等数据的获取提供抽象的底层构建。 反射机制: 反射需要先获得类的class字节码,由JVM类加载器(ClassLoader)负责加载,并在内存中缓存class的内部结构。借助于Java的反射机制…

面试常考Linux指令

文件权限 操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在 Linux 中权限一般分为读(readable)、写(writable)和执行(executable),分为三组。分别对应文件的属主(owner),属组(group)和其他用…

腾讯智影PC端“智能画布”功能上线

随着人工智能技术的不断发展,图片编辑领域也迎来了创新的变革。腾讯智影PC端近日推出了一项革命性的新功能——“智能画布”,它将AI绘画技术与传统图片编辑相结合,为用户带来了前所未有的便捷体验。 腾讯智影官网 地址:点击此处…