一、方法的重载
1.在同一个类中,多个方法,方法名相同,参数列表不同(方法签名不同)
- 其中参数列表不同有以下几种情况
- 参数个数
- 参数类型不同
- 当类型不同的时候,顺序不同也叫参数列表不同
2.重载方法如何调用
- 根据参数进行匹配不同的方法,只看调用时候的参数列表
3.作用
- 方法的重载是一个类中封装的一种体现,也是一个类中多态的一种体现
- 方法的重载和修饰符无关
- 方法的重载有没有返回值类型无关
- 方法的重载和返回值类型无关
- 方法的重载和参数的名字无关
- 方法的重载只和方法名与参数列表有关
4.举例
public class OverLoad06{
public static void main(String[] args){
//调用求长方形面积
System.out.println(getAera(5,6));
//调用求圆的面积
System.out.println(getAera(1));
//调用求梯形的面积
System.out.println(getAera(1,2,3));
}
public static double getAera(double a,double b){
System.out.println("长方形面积为");
return a*b;
}
public static double getAera(double a){
System.out.println("圆形面积为");
return 3.14*a*a;
}
public static double getAera(double a,double b,double c){
System.out.println("梯形面积为");
return (a+b)*c/2;
}
}
二、方法的递归
1.方法的递归就是在方法中自己调用自己
2.定义
-
递归头: 停止自己调用自己的条件
-
递归体: 自己调用自己
-
临界条件: 停止自己调用自己的条件,递归头
-
递归前进段:还没有到临界条件之前自己调用自己的阶段
-
递归后退段:把结果返回给上一层
3.举例
public class Recursion07{
public static void main(String[] args){
System.out.println(recursion(2));
cfb(5);
}
//实现阶乘: 5! = 5*4*3*2*1
/*
1.方法的作用: 求某个数的阶乘
2.返回值: int
3.参数: int i =5
临界条件: i=1 1的阶乘就是1
返回值: 阶乘的结果,如果参数是<0的值,返回-1
*/
public static int recursion(int i){
if(i<=0){
return -1;
}
if(i==1){
return 1;
}
return i*recursion(i-1);
}
//实现九九乘法表
//打印几几乘法表
public static void cfb(int i){
if(i<1){
System.out.println("你输入的数字有误");
return;
}
if (i == 1) {
System.out.println("1*1=1");
} else {
cfb(i-1);
for(int j=1;j<=i;j++){
System.out.print(j + "*" + i + "=" + j * i + "\t");
}
System.out.println();
}
}
}