文章目录
一、方法的重载
* 重载的概念:
在同一个类中,允许存在一个以上的同名方法,只要他们的参数个数或者参数类型不同即可。
* 重载的特点:
与返回值无关,只看参数列表,且参数列表必须不同。(参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。
重载实例:
//返回两个整数的和
int add(int x, int y){
return x + y;}
//返回三个整数的和
int add(int x, int y, int z){
return x+y+z;}
//返回两个整数的和
double add(double x, double y){
return x+y;}
练习:判断下列类是否是重载
与void show(int a, char b, double c){ } 构成重载的有:
a) void show(int x, char y, double z){ } //不构成重载,因为3个参数类型相同,虽然参数名不相同。
b) int show(int a, double b, char c) { } //构成重载,因为3个参数类型不同,(顺序位置不同即可)
c) void show(int a, double c, char b){ } //构成重载,因为3个参数类型不同,(顺序位置不同即可)
d) boolean show(int c, char b){ } //重载
e) void show(double c){ } //重载
f) void shows(int x ,char y, double z){ } //非重载
g) void shows() {double c} //非重载,因为方法名不一样
练习:编写重载的类
* 编写程序,定义三个重载方法并调用。方法名为mOL。
- 三个方法分别接受一个int参数、两个int参数、一个字符串参数。分别执行平方运算并输出结果,输出字符串信息。
- 在主类main()方法中分别用参数区别调用三个方法
public class Test {
//类名的首字母要大写
public static void main(String[] args){
Test t = new Test ();
// t.mOL(2);
// t.mOL(3, 4);
// t.mOL("方法重载mOL");
}
public void mOL(int i){
System.out.println(i * i * i);
}
public void mOL(int x, int y){
System.out.println(x * y);
}
public void mOL(String s){
System.out.println(s);
}
}
定义三个重载方法max(),第一个方法求两个int值中的最大值,第二个方法求两个double值中的最大值,并分别调用三个方法。
public class Test {
//类名的首字母要大写
public static void main(String[] args){
Test t = new Test ();
t.max(3,4);
t.max(5.5, 6.6);
t.max(5, 6, 7);
}
public void max(int x, int y){
System.out.println(x > y ? x : y);
}
public void max(double x, double y){
System.out.println(x > y ? x : y);
}
public void max(double m, double n, double k){
System.out.println(m > n ? (m > k ? m : k):(n > k ? m : k));
}
}
体会可变个数的形参
* 下面采用数组形参来定义方法
- public static void test(int a, String[] books);
* 以可变个数形参来定义方法
- public static void test(int a, String...books);
说明:
1.可变参数:方法名参数部分指定类型的参数个数是可变多个
2.声明方式:方法名(参数的类型名....参数名)
3.可变参数方法的使用与方法参数部分使用数字组是一致的
4.方法的参数部分有可变形参,需要放在形参声明的最后 ,
如 可以 public void printInfol(int i, String... args)
但不可以 public void printInfol(String... args, int i)
public class Person {
/**
* 用数组的方式来传递可变个数的参数
* 如果没有参数,就要定义一个空数组或者是null
* @param args
*/
public void printInfo(String[] args){
for(int i = 0; i < args.length; i++){
System.out.println(args[i]);
}
}
/**
*用java特有的...的方式来传递可变个数的参数,这种参数在使用时与数组的使用方式相同
*如果没有参数就可以不填
*这种...代表可以传递0到多个参数
*如果一个方法有多个的形参(...这种的参数)一定要放在所有的参数最后
*可以 public void printInfol(int i, String... args)
*但不可以 public void printInfol(String... args, int i)
*/
public void printInfol(String...args){
for(int i = 0; i < args.length; i++){
System.out.println(args[i]);
}
}
}
public class Test {