JavaSE_3th_方法的重载
来源:互联网 发布:cad网络拓扑图下载 编辑:程序博客网 时间:2024/06/06 23:52
·方法的重载
Test类中有如下void max(int a, int b)方法用于打印出两个int类型的数中最大的数,但如果实参为float类型或double类型,该方法就不可用了。
class Test {void max(int a, int b) {System.out.println(a > b ? a : b);}}于是添加了两个方法如下:
class Test {void max(int a, int b) {System.out.println(a > b ? a : b);}void maxFloat(float a, float b) {System.out.println(a > b ? a : b);}void maxDouble(double a, double b) {System.out.println(a > b ? a : b);}}
每次需要根据传入的数来确定方法名,这显然太过麻烦,可以使用方法的重载解决这个问题:
class Test {void max(int a, int b) {System.out.println(a > b ? a : b);}void maxFloat(float a, float b) {System.out.println(a > b ? a : b);}void maxDouble(double a, double b) {System.out.println(a > b ? a : b);}}
方法的重载是指一个类中可以定义有相同名字,但参数不同的多个方法。调用方法时,会根据不同的参数表选择对应的方法。
程序会根据test.max(3, 4)或test.max(2.8, 5.2)来选择调Test类中不同的max方法。
假如需要比较short类型数据的大小,还可以进一步添加short类型数据的max方法:
class Test {void max(int a, int b) {System.out.println(a > b ? a : b);}void max(short a, short b) {System.out.println(a > b ? a : b);}void max(float a, float b) {System.out.println(a > b ? a : b);}void max(double a, double b) {System.out.println(a > b ? a : b);}public static void main(String[] args) {Test test = new Test();test.max(3, 4);}}请问test.max(3, 4);是调用的哪一个max方法?short的还是int的?
之前说过,当发生方法重载时,程序会根据实参来判断调用哪一个方法,这里的3和4默认情况是int类型,因此调用的是void max(int a, int b)这个方法,那么要调用void max(short a, short b)方法只要传入的是两个short类型的变量即可:
class Test {void max(int a, int b) {System.out.println(a > b ? a : b);}void max(short a, short b) {System.out.println(a > b ? a : b);}void max(float a, float b) {System.out.println(a > b ? a : b);}void max(double a, double b) {System.out.println(a > b ? a : b);}public static void main(String[] args) {Test test = new Test();short a = 3;short b = 4;test.max(a, b);//调用的是void max(short a, short b)方法}}对于如下情况的两个max方法并不构成重载,由于可以不接收带返回值方法的返回值,在直接调用test.max(3, 4)方法时,程序无法得知要调用的到底是哪一个max方法,因此程序会出错,故不构成方法重载。
class Test {void max(int a, int b) {System.out.println(a > b ? a : b);}int max(int a, int b) {return a > b ? a : b;}}一句话,方法名相同的一些方法,在被调用能够与别的方法区分开而不至于出现混淆的情况,那么这样的方法互相之间构成重载。
· 构造方法的重载
与普通方法一样,构造方法也可以重载,如下所示:
public class Test {public static void main(String[] args) {Person p1 = new Person();Person p2 = new Perosn(2);Person p3 = new Person(3, 40);}}class Person {int id;int age;Person() {id = 1;age = 20;}Person(int _id) {id = _id;age = 30;}Person(int _id, int_age) {id = _id;age = _age;}}
0 0
- JavaSE_3th_方法的重载
- 方法的重载
- 重载新的方法
- 关于方法的重载
- 方法的重载
- java方法的重载
- 方法重载的 依据??
- 方法的重载
- 方法的重载
- 方法重载的例子
- java 方法的重载
- 方法的重载
- 重载equals的方法
- 构造方法的重载
- 简单的方法重载
- JAVA 方法的重载
- java 方法的重载
- 方法的重载
- log4j2自己使用配置
- 数据流图的画法
- Windows 蓝牙外发文件拦截
- sync_binlog innodb_flush_log_at_trx_commit 浅析
- Java NIO与IO的详细区别(通俗篇)
- JavaSE_3th_方法的重载
- hdu 1686 Oulipo(KMP)
- Android代码同步问题之(二)
- Asp.Net form赋值model
- Android 图片压缩
- eclipse从数据库逆向生成Hibernate实体类
- 【转】总局公开回应质疑:TVOS不是安卓
- bootstrap——css样式(三、表格)
- 跟我一起云计算(1)——storm