上QQ阅读APP看书,第一时间看更新
8.4 重载
重载在整个Java语言设计中,有着非常重要的地位。本节将先讲述重载的概念,然后使用大量的实例,让读者更加清晰地熟悉重载,并且联系实际,将这个概念使用到现实生活中的程序开发中去,从而为以后的开发工作奠定基础。
8.4.1 什么是重载
在Java中,同一个类中的两个或两个以上的方法可以有同一个名字,只要它们的参数声明不同即可,这种方法就被称为重载(overloaded),此过程称为方法重载(method overloading)。
【实例8.14】下面看一个详细的实例。
01 class overload 02 { 03 ///一个普通的方法,不带参数 04 void test() 05 { 06 System.out.println("No parameters"); 07 } 08 ///重载上面的方法,并且带了一个整型参数 09 void test(int a) 10 { 11 System.out.println("a:" + a); 12 } 13 ///重载上面的方法,并且带了两个参数 14 void test(int a,int b) 15 { 16 System.out.println("a and b:" + a + " " + b); 17 } 18 ///重载上面的方法,并且带了一个双精度参数,与上面带一个参数的重载方法不一样 19 double test(double a) 20 { 21 System.out.println("double a:" + a); 22 return a*a; 23 } 24 public static void main(String args[]) 25 { 26 overload o= new overload (); 27 o.test(); 28 o.test(2); 29 o.test(2,3); 30 o.test(2.0); 31 } 32 }
【代码说明】第4~23行定义了4个相同名称的test()方法,不同的是它们的参数,有没有参数的,有一个参数的,也有两个参数的,而且参数可以是不同的数据类型。第27~30行分别调用这4个方法。
【运行效果】
No parameters a:2 a and b:2 3 double a:2.0
通过上面的实例,读者可以看出,重载就是在一个类中,有相同的函数名称,但形参不同的函数。重载的结果,可以让一个程序段,尽量减少代码和减少程序的函数种类。
8.4.2 用实例来说明重载的意义
【实例8.15】为了能让读者更加熟练运用重载方法编写程序,下面再举一个有关重载的实例。
01 public class overload1 02 { 03 ///一个输出方法 04 void print() 05 { 06 System.out.println("你好"); 07 } 08 ///重载上面的输出方法,加上了参数 09 void print(String name) 10 { 11 System.out.println(name+",你好"); 12 } 13 ///重载上面的输出方法,加上了两个参数 14 void print(String name,int age) 15 { 16 System.out.println(name+",你好,你有"+age+"岁了"); 17 } 18 public static void main(String args[]) 19 { 20 overload1 o=new overload1(); 21 o.print(); 22 o.print("王华"); 23 o.print("王华",30); 24 } 25 }
【代码说明】第4~17行定义了3个同名称print()方法,不同的是参数个数和参数类型。第21~23行分别调用这3种方法。
【运行效果】
你好 王华,你好 王华,你好,你有30岁了
使用重载其实就是避免繁多的方法函数名,有些函数的功能是相似的,如果重新建立一个函数,重新取个函数名称,会让程序段显得比较不容易阅读。
下面总结重载的实质:
❑方法名相同
❑参数个数不同
❑参数类型不同
当访问一个重载方法时,首先编译器会通过比较参数类型与实际调用方法中使用值的类型,以选择正确的方法,若没有发现匹配的,则编译器报错。这就叫做重载分辨。