本文为学习笔记 能力有限 如有错误望指正。谢谢!!!
重载:在一个类中允许有方法名相同,但是参数不同的方法;(这里“参数不同”指:参数的个数或者类型不同)。
举例:
public class Test {
void max( int a , int b ) {
System.out.println( a > b ? a : b );
}
void max( short a, short b) {
System.out.println("short");
System.out.println( a > b ? a ; b);
}
void max( float a , float b) {
System.out.println( a > b ? a : b);
}
public static void main(String[] args) {
Test t =new Test();
t.max(3,4);
short a = 3;
short b = 4;
t.max( a, b);
}
}
在这个例子中定义了一个Test 类,在这个类中包含了三个名字相同的但是参数类型不同的函数max.之后在main函数里面调用了两次。前者调用的是第一个max函数,为什么不调用第二个max函数呢?因为在java中编译器会将常量3 4 看作int类型所以匹配到第一个max 函数;后者max中的参数a b 被定义为short类型所以编译器匹配到第二个max函数。重另一种角度理解其实函数的重载就是编译器匹配恰好合适的函数调用。这里说的恰好合适是指:函数名相同,参数个数和类型相同。构造方法的重载与之类似。
网友评论