Java方法重载

感受

以下代码不使用“方法重载”,不使用overload,分析程序存在的缺点

public class OverloadTest01 {

    // 入口
public static void main(String[] args){ int result1 = sumInt(1, 2);
System.out.println(result1); double result2 = sumDouble(1.0, 2,0);
System.out.println(result2); long result3 = sumLong(1L, 2L);
System.out.println(result3); } public static int sumInt(int a, int b){ return a + b;
} public static double sumDouble(double a, double b){ return a + b;
} public static long sumLong(long a, long b){ return a + b;
}
}

缺点:

  1. sumInt、sumDouble、sumLong方法虽然功能不同,但功能相似【求和】

  2. 代码不美观,影响阅读,对以后维护造成不便

解决:使用 Sun 公司提供的【方法重载/overload】机制,仅限功能相似

体验方法重载:

public class OverloadTest01 {

    // 入口
public static void main(String[] args){ System.out.println(sum(1, 2));
System.out.println(sum(1.0, 2.0));
System.out.println(sum(1L, 2L)); } public static int sum(int a, int b){
System.out.println("sum(int)")
return a + b;
} public static double sum(double a, double b){
System.out.println("sum(double)")
return a + b;
} public static long sum(long a, long b){
System.out.println("sum(long)")
return a + b;
} }

可以看到,使用方法重载,此时区分方法不再依靠方法名,依靠参数的参数数据类型

参数的类型不同,对应调用的方法不同

使用方法重载,注意区分功能的相似度,功能有明显区别应该以不同名称命名,避免触发方法重载

方法重载使用

方法重载:

  1. 方法重载又被称作:overload

  2. 什么时候能使用方法重载?

    • 功能相似时,尽可能使用
  3. 什么条件构成方法重载?

    • 在同一个类当中
    • 方法名相同
    • 参数列表不同:
      • 数量不同
      • 顺序不同
      • 类型不同
  4. 方法重载和什么有关系,和什么没关系?

    • 方法名+参数列表有关系
    • 返回值类型无关
    • 修饰符列表无关

public class OverloadTest02{ public static void main(String[] args){ U.p(10);
U.p(false);
U.p('a');
U.p("hello World");
U.p(3.0);
}
} class U{ public static void p(byte b){
System.out.println(b);
}
public static void p(short b){
System.out.println(b);
}
public static void p(int b){
System.out.println(b);
}
public static void p(long b){
System.out.println(b);
}
public static void p(float b){
System.out.println(b);
}
public static void p(double b){
System.out.println(b);
}
public static void p(boolean b){
System.out.println(b);
}
public static void p(char b){
System.out.println(b);
}
public static void p(String b){
System.out.println(b);
}
}


Java方法


合集总目录:学习笔记--Java合集



学习笔记--Java方法重载的更多相关文章

  1. Java学习笔记之方法重载,动态方法调度和抽象类

    一.方法重载 如果子类中的方法与它的超类中的方法有相同的方法名,则称子类中的方法重载超类中的方法,特别是当超类和子类中的方法名和参数类型都相同时,在子类中调用该方法时,超类中的方法会被隐藏.考虑下面程 ...

  2. Java学习笔记之——方法重载

    方法重载: overload 1. 方法签名 组成:方法名(参数列表) 参数列表不同分为哪些情况? (1)有无参数 (2)参数的类型 (3)参数的个数 (4)参数的顺序(前提是类型不一样) 2.方法重 ...

  3. Java学习笔记day05_方法重载

    1.方法的重载overload 在同一个类中, 允许出现同名的方法, 只要方法的参数列表不同即可. 参数列表不同: 参数个数不同, 参数类型不同, 顺序不同. public class MethodO ...

  4. Java学习笔记之方法重载

    被重载的方法必须具有不同的参数列表.不能基于不同修饰符或返回值类型来重载方法. package welcome; public class TestMethodOverloading { public ...

  5. Java学习笔记之---方法和数组

    Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而 ...

  6. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  7. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  8. C++基础 学习笔记五:重载之运算符重载

    C++基础 学习笔记五:重载之运算符重载 什么是运算符重载 用同一个运算符完成不同的功能即同一个运算符可以有不同的功能的方法叫做运算符重载.运算符重载是静态多态性的体现. 运算符重载的规则 重载公式 ...

  9. java方法——重载2

    什么是Java方法重载 方法重载的定义 1 对于同一个类,如果这个类里面有两个或者多个重名的方法,但是方法的参数个数.类型.顺序至少有一个不一样,这时候局构成方法重载. END 方法重载示例 1 pu ...

  10. 【知了堂学习笔记】java 方法重载与重写的归纳

    方法重载:Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同.调用方法时通过传递给它们的不同个数和类型的参数来决定 ...

随机推荐

  1. 研二学妹面试字节,竟倒在了ThreadLocal上,这是不要应届生还是不要女生啊?

    一.写在开头     今天和一个之前研二的学妹聊天,聊及她上周面试字节的情况,着实感受到了Java后端现在找工作的压力啊,记得在18,19年的时候,研究生计算机专业的学生,背背八股文找个Java开发工 ...

  2. CSS——阴影

    <!DOCTYPE html> <html> <head> <style> p.one { text-shadow: 3px 5px 5px #FF00 ...

  3. RDP 端口转发 多窗口运行

    需要设置本机的默认端口进行修改 优点:(1)部署简单.Windows自带,支持IPv4和IPv6(2)不用重启机器,还长记性.命令即时生效,重启系统后配置仍然存在.缺点:(1)不支持UDP(2)XP/ ...

  4. 莫烦tensorflow学习记录 (1)session会话控制、variable变量、placeholder传入值

    https://mofanpy.com/tutorials/machine-learning/tensorflow/session/ Session 会话控制 #https://mofanpy.com ...

  5. Jenkins通过脚本进行自动发布

    编写以下脚本: ------------------------------------------------------------------------------------- #!/bin ...

  6. Qt-FFmpeg开发-打开本地摄像头(6)

    音视频/FFmpeg #Qt Qt-FFmpeg开发-打开本地摄像头[软解码+ OpenGL显示YUV] 目录 音视频/FFmpeg #Qt Qt-FFmpeg开发-打开本地摄像头[软解码+ Open ...

  7. MQ的相关概念

    MQ的相关概念 什么是MQ ​ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下 ...

  8. 前端传参中文需要utf-8转一下给后端

    const Msg = this.form.Msg.replace( (/%(u[0-9A-F]{4})|(%[0-9A-F]{2})/gm, $0 => { return escape($0) ...

  9. kettle从入门到精通 第五十六课 ETL之kettle Microsoft Excel Output

    1.9.4 版本的kettle中有两个Excel输出,Excel输出和Microsoft Excel输出.前者只支持xls格式,后者支持xls和xlsx两种格式,本节课主要讲解步骤Microsoft ...

  10. R-tree算法

    R-tree是一种用于处理空间数据的自平衡搜索树结构,特别适合于存储和查询二维或更高维度的空间对象,如点.线段.矩形等.它在地理信息系统.计算机图形学.数据库等领域有广泛应用.R树通过将空间分割成几个 ...