Java 从入门到进阶之路(七)
在之前的文章中我们介绍了一下 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 从入门到进阶之路(七)的更多相关文章
- Java 从入门到进阶之路(一)
写在前面:从本片文章开始,将记录自己学习 Java 的点滴路程,目标定的并不是让自己成为一个 Java 高手,而是让自己多掌握一门语言,使自己的知识面更广一些,在学习 Java 的过程中如有不对的地方 ...
- Java 从入门到进阶之路(二)
之前的文章我们介绍了一下用 IDEA 编辑器创建一个 Java 项目并输出 HelloWorld,本章我们来看一下 Java 中的变量和基本数据类型. 在这之前我们先来看一下 Java 中的关键字,这 ...
- Java 从入门到进阶之路(三)
之前的文章我们介绍了 Java 中的变量和基本数据类型,本章我们来看一下 Java 的运算符和表达式. 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操 ...
- Java 从入门到进阶之路(四)
之前的文章我们介绍了 Java 的运算符和表达式,本章我们来看一下 Java 的循环结构. 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性进行. 循环的 ...
- Java 从入门到进阶之路(五)
之前的文章我们介绍了 Java 的循环结构,本章我们来看一下 Java 的数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. 数组 - 相同数据类型的元 ...
- Java 从入门到进阶之路(六)
之前的文章我们介绍了 Java 的数组,本章我们来看一下 Java 的对象和类. Java 是一种面向对象语言,那什么是对象呢,对象在编程语言中属于一个很宽泛的概念,我们可以认为万事万物都是对象,每个 ...
- Java 从入门到进阶之路(八)
在之前的文章我们介绍了一下 Java 中的重载,接下来我们看一下 Java 中的构造方法. 我们之前说过,我们在定义一个变量的时候,java 会为我们提供一个默认的值,字符串为 null,数字为 0. ...
- Java 从入门到进阶之路(九)
之前的文章我们介绍了一下 Java 中的构造方法,接下来我们再来看一下 Java 中的引用型数组类型. 现在我们想定义一个坐标系,然后通过横坐标(row)和纵坐标(col)来确定一个坐标点,代码如下: ...
- Java 从入门到进阶之路(十)
之前的文章我们介绍了一下 Java 中的引用型数组类型,接下来我们再来看一下 Java 中的继承. 继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继 ...
随机推荐
- 2019 Multi-University Training Contest 6
A.Salty Fish upsolved 题意 偷苹果,每个节点上有\(a[i]\)个苹果,在某些位置有摄像机,看管子树里距离不超过\(k[i]\)的节点,损坏摄像机有\(c[i]\)代价,求最大收 ...
- .net core Webapi +EF
开发工具 Vs2017 +MSsqlsever 打开VS2017,新建web项目 点击确认,生成项目,在项目中增加文件夹Model,在Model中增加类TodoItem public class To ...
- yzoj P2343 & 洛谷 P1437 [HNOI2004]敲砖块
题意 在一个凹槽中放置了N层砖块,最上面的一层油N块砖,从上到下每层一次减少一块砖.每块砖都有一个分值,敲掉这块砖就能得到相应的分值,如图所示. 如果你想敲掉第i层的第j块砖的话,若i=1,你可以直接 ...
- 编码神器Lombok,学会后开发效率至少提高一倍!
Lombok会利用注解自动生成javaBean中的getter.setter.equals.toString等一系列方法,大大提供开发效率,本文详细介绍下Lombok的安装及使用. 本文目录 一.Lo ...
- std::move的原理与实现,右值引用的深入理解
这次我真的懂了.... 首先C++11引入了右值引用 && ‘&&’这个要连起来看,是一个整体,C++多了一个关键字而已. 不是引用的引用.是船新的一种语法.那有什么用 ...
- Java复习笔记(二):数据类型以及逻辑结构
一.数据类型 1.数据类型又分为基本数据类型和引用数据类型,而他们的区别在于,引用数据类型需要开辟内存空间来进行分配,什么意思呢?先来看看他们有哪些. 整数型:byte,short,int,long ...
- 【Offer】[29] 【顺时针打印矩阵】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 例如,如果输入如下矩阵:  则依次打印出数字1,2,3,4,8,12, ...
- mysql之innodb存储引擎---数据存储结构
一.背景 1.1文件组织架构 首先看一下mysql数据系统涉及到的文件组织架构,如下图所示: msyql文件组织架构图 从图看出: 1.日志文件:slow.log(慢日志),error.log(错误日 ...
- Bootstrap4默认样式不对胃口?教你使用NPM+Webpack+SASS来定制
Bootstrap 是一个流行的前端样式库,可以方便快速的构建应用,但默认样式可能不尽人意,本文就介绍如何使用 NPM, Webpack, SASS 针对它的源码来定制自己的主题.版本使用的是 Boo ...
- 实验吧CTF练习题---WEB---头有点大解析
实验吧web之头有点大 地址:http://www.shiyanbar.com/ctf/29 flag值:HTTpH34der 解题步骤: 1.进入解题界面,看提示 2.说提示很多,再提示 ...