在之前的文章中我们介绍了一下 java 中的对象和类,接下来我们来看一下 Java 中的方法重载。

在显示生活中,我们肯定会遇到这样一个问题,那就是我们再商场买东西的时候在付账时的选择。如下

A:在收银台处设三个窗口,分别满足现金,手机,刷卡三种形式的付款。

B:可以设置一个窗口,这个窗口满足以上三种付款方式。

对于消费者和商场而言,B 方案无疑比 A 方案更好,商场可以减少雇佣员工和占地,消费者不必去刻意选择支付方式。

在代码的世界里,以上三种支付方式其实都是程序的运行,我们可以将上面的支付方式写成一个 pay( ) 方法,

但是如果我们根据类型来区分支付方法,比如 payByMoney( ),payByPhone( ),payByCard( ),要是再有其他的支付方式我们还需要增加其他方法,比如还可以使用支票付款,手机付款又可以分为支付宝,微信,云闪付等等,那么对于代码的维护性和扩展性看来说很不友好,于是乎我们就可以利用重载来解决上面的问题。

Java 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

最常用的地方就是构造器的重载。

重载规则:

  • 被重载的方法必须改变参数列表(参数个数或类型不一样);
  • 被重载的方法可以改变返回类型;
  • 被重载的方法可以改变访问修饰符;
  • 被重载的方法可以声明新的或更广的检查异常;
  • 方法能够在同一个类中或者在一个子类中被重载。
  • 无法以返回值类型作为重载函数的区分标准。
 public class HelloWorld {
public static void main(String[] args) {
Aoo aoo = new Aoo(); // 创建一个 Aoo 对象
aoo.foo(); // foo 无参
aoo.foo(123); // foo 整型参数123
aoo.foo("abc"); // foo 字符串参数zhangsan
aoo.foo("abc",123); // foo 字符串+整型参数abc123
aoo.foo(123,"abc"); // foo foo 整型+字符串参数123abc
}
} class Aoo {
void foo() {
System.out.println("foo 无参");
} void foo(int num) {
System.out.println("foo 整型参数" + num);
} void foo(String str) {
System.out.println("foo 字符串参数" + str);
} void foo(String str, int num) {
System.out.println("foo 字符串+整型参数" + str + num);
} void foo(int num, String str) {
System.out.println("foo 整型+字符串参数" + num + str);
}
}

在上面的代码中,我们定义了一个 Aoo 的类,在 Aoo 类里有一个 foo( ) 方法,我们通过向 foo( ) 内传入不同的参数,在调用时传入不同的蚕食,编译器会自动根据其参数的不同,绑定到不同的方法。这样我们就可以解决上面的支付问题,向 pay( ) 方法中传入不同的参数来判断不同的支付方式,当然支付是一个比较复杂的方法,这里就不做演示了。

Java 从入门到进阶之路(七)的更多相关文章

  1. Java 从入门到进阶之路(一)

    写在前面:从本片文章开始,将记录自己学习 Java 的点滴路程,目标定的并不是让自己成为一个 Java 高手,而是让自己多掌握一门语言,使自己的知识面更广一些,在学习 Java 的过程中如有不对的地方 ...

  2. Java 从入门到进阶之路(二)

    之前的文章我们介绍了一下用 IDEA 编辑器创建一个 Java 项目并输出 HelloWorld,本章我们来看一下 Java 中的变量和基本数据类型. 在这之前我们先来看一下 Java 中的关键字,这 ...

  3. Java 从入门到进阶之路(三)

    之前的文章我们介绍了 Java 中的变量和基本数据类型,本章我们来看一下 Java 的运算符和表达式. 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操 ...

  4. Java 从入门到进阶之路(四)

    之前的文章我们介绍了 Java 的运算符和表达式,本章我们来看一下 Java 的循环结构. 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性进行. 循环的 ...

  5. Java 从入门到进阶之路(五)

    之前的文章我们介绍了 Java 的循环结构,本章我们来看一下 Java 的数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. 数组 - 相同数据类型的元 ...

  6. Java 从入门到进阶之路(六)

    之前的文章我们介绍了 Java 的数组,本章我们来看一下 Java 的对象和类. Java 是一种面向对象语言,那什么是对象呢,对象在编程语言中属于一个很宽泛的概念,我们可以认为万事万物都是对象,每个 ...

  7. Java 从入门到进阶之路(八)

    在之前的文章我们介绍了一下 Java 中的重载,接下来我们看一下 Java 中的构造方法. 我们之前说过,我们在定义一个变量的时候,java 会为我们提供一个默认的值,字符串为 null,数字为 0. ...

  8. Java 从入门到进阶之路(九)

    之前的文章我们介绍了一下 Java 中的构造方法,接下来我们再来看一下 Java 中的引用型数组类型. 现在我们想定义一个坐标系,然后通过横坐标(row)和纵坐标(col)来确定一个坐标点,代码如下: ...

  9. Java 从入门到进阶之路(十)

    之前的文章我们介绍了一下 Java 中的引用型数组类型,接下来我们再来看一下 Java 中的继承. 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继 ...

随机推荐

  1. poj3666 Making the Grade(基础dp + 离散化)

    Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more tha ...

  2. CodeForces 982 D Shark

    Shark 题意:一个研究员观察了一条鲨鱼n天的运动,然后这条鲨鱼他只会往前走,不会回到去过的地方,现在有一个k,,如果鲨鱼当天游过的距离 >= k, 代表的鲨鱼在这天会前往下一个地点,现在求鲨 ...

  3. java-冒泡排序笔记

    //冒泡排序public class BubbleSort {    //    public static void main(String[] args) {//        // TODO 自 ...

  4. Allure-pytest功能特性介绍

    前言 Allure框架是一个灵活的轻量级多语言测试报告工具,它不仅以web的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息从dev/qa的角度来看,Al ...

  5. jQuery - 02. 样式表属性操作/类操作、动画、显示隐藏、滑入、淡入、停止动画、节点操作、添加对象、清空节点

    样式表属性操作.css $("div").css({'width':100,'height':100,'background':'red'}); $("div" ...

  6. [币严区块链]ETH搭建节点区块数据同步的三种模式:full、fast、light

    ETH  全节点Archive(归档)模式数据量增长图 上述图表可通过链接查看:https://etherscan.io/chartsync/chainarchive 通过上表,可以看到截止2019年 ...

  7. BeanCopier类

    网上学习了一番BeanCopier类. cglib是一款比较底层的操作java字节码的框架. 下面通过拷贝bean对象来测试BeanCopier的特性: public class OrderEntit ...

  8. Net基础篇_学习笔记_第十一天_面向对象(构造函数)

    VS封装字段快捷键: 提取方法 Ctrl+R,M         封装字段 Ctrl+R,E           提取接口 Ctrl+R,I. 构成函数: public Student() { Con ...

  9. Docker Compose基本使用-使用Compose启动Tomcat为例

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  10. java获取电脑mac物理地址

    import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import ...