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. itest(爱测试) 紧急 BUG 修复版(4.5.6)发布,,开源BUG 跟踪管理 & 敏捷测试管理&极简项目管理软件

    itest 简介 itest 开源敏捷测试管理,testOps 践行者,极简的任务管理,测试管理,缺陷管理,测试环境管理4合1,又有丰富的统计分析.可按测试包分配测试用例执行,也可建测试迭代(含任务, ...

  2. Redisson 限流器源码分析

    Redisson 限流器源码分析 对上篇文章网友评论给出问题进行解答:redis 的key 是否会过期 可以先阅读上篇文章: redis + AOP + 自定义注解实现接口限流 - 古渡蓝按 - 博客 ...

  3. java.sql.SQLException: MONTH 报错解决方法

    idea控制台报错:java.sql.SQLException: MONTH Error attempting to get column 'xxx' from result set. Cause: ...

  4. 算法金 | 再见!!!KNN

    大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 KNN算法的工作原理简单直观,易于理解和实现,这使得它在各种应用场景中备受青睐. 我们 ...

  5. JavaScript防抖与节流笔记

    JavaScript防抖与节流 概念 防抖(debounce)与节流(throttle)是两个相似但有本质区别的两个概念,但两个概念的存在都是为了控制在特定条件下函数最大的执行次数.这在例如将函数执行 ...

  6. ftl生成模板并从前台下载

    1.生成模板的工具类 package com.jesims.busfundcallnew.util; import freemarker.template.Configuration; import ...

  7. work04

    第一题: 分析以下需求,并用代码实现(每个小需求都需要封装成方法) 1.求两个数据之和(整数 小数),在main方法中打印出来 2.判断两个数据是否相等(整数 小数),在控制台上打印出来 3.获取两个 ...

  8. 使用Wesky.Net.OpenTools包来快速实现嵌套型结构体数据转换功能

    今天遇到有人提到结构体和byte数组互转的问题,我就顺便拿来水一篇.这是一个冷门的问题,估计使用的人不多.既然有需求,应该就有使用场景,那就顺便整一波. 为了达到效果,结构体.复杂结构体嵌套等都能实现 ...

  9. 升级babel7后,直接引用element-ui中没有暴露出来的组件image-viewer.vue导致的打包错误

    问题 & 解决方案 升级babel7后,原先代码中像这样直接引用element-ui组件的地方,出现了报错 Module parse failed: Unexpected token (1:0 ...

  10. vite+vue3+ts+elementPlus前端框架搭建 [三] router路由管理

    路由包括动态路由.静态路由两种,本文中以静态路由的方式实现了动态路由. 1. 创建Router 在Src目录下创建router文件夹,并在router文件夹下创建index.ts文件. index.t ...