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. C# 使用 运算符重载 隐式转换 对Point进行加减计算

    运算符重载方便了我们对自定义类型(自定义的类或者结构体)的计算. 运算符重载关键字 operator. 除了这些运算符不支持:x.y.f(x).new.typeof.default.checked.u ...

  2. Windows Server 2022 NTP服务器

    一.配置NTP服务器 配置NTP服务器,为客户端提供时间同步服务. 如果计算机是Active Directory域控制器,则NTP服务器功能已自动启动. 因此,下面的示例是计算机在工作组环境中启用NT ...

  3. Yarp 让系统内调度更灵活 http、https、websocket 反向代理

    简介 Yarp 是微软团队开发的一个反向代理组件, 除了常规的 http 和 https 转换通讯,它最大的特点是可定制化,很容易根据特定场景开发出需要的定制代理通道. 详细介绍:https://de ...

  4. 对于UITableView和UIImageView的DrawRect重写之后的影响

    一.继承 UITableView和UIImageView , 重写 DrawRect 方法,然后里面留空 ImageView @implementation DrawImageView - (void ...

  5. LeetCode 40. Combination Sum II 组合总和 II (C++/Java)

    题目: Given a collection of candidate numbers (candidates) and a target number (target), find all uniq ...

  6. LeetCode 682. Baseball Game 棒球比赛(C++/Java)

    题目: You're now a baseball game point recorder. Given a list of strings, each string can be one of th ...

  7. flutter+Springboot的结合

    我们团队的开发 前端采用flutter 后端采用spring boot 首先 完成了app的图标名字的修改 在app/src/main/res/mipmap 目录中 存放app图标 图片 在Andro ...

  8. 订单请求接口设计,避免timeout超时问题 下单解决

    订单请求接口设计,避免timeout超时问题 下单解决 接上篇:外部系统对接下单幂等性校验逻辑及接口超时处理 https://www.cnblogs.com/oktokeep/p/17668039.h ...

  9. 什么是Web3.0,和区块链又有什么关系?

    又是一个莫名其妙的词语的新起-.- 我大致归纳为以下几个点 什么是web3.0 Web 3.0(Web3)是下一代互联网的发展方向,旨在创建一个更加去中心化.用户控制和数据保护的网络环境.与之前的We ...

  10. 2024-06-19:用go语言,给定一个起始下标为 0 的整数数组 nums 和一个整数 k, 可以执行一个操作将相邻两个元素按位AND后替换为结果。 要求在最多执行 k 次操作的情况下, 计算数组

    2024-06-19:用go语言,给定一个起始下标为 0 的整数数组 nums 和一个整数 k, 可以执行一个操作将相邻两个元素按位AND后替换为结果. 要求在最多执行 k 次操作的情况下, 计算数组 ...