重载
为多个非常相似的方法分别赋予不同的名称会导致程序中出现大量的名称,重载,对不同的方法赋予相同名称;
一、方法的重载
所谓方法的重载,就是在同—个类中定义多个相同名称的方法,因此,在不同类中定义相同名称的方法并不是重载。
所谓方法的签名,就是方法名和形参的个数、类型的组合
Java允许一个类中存在多个相同名称的方法,同一个类中声明多个相同名称的方法称为重载方法,
不过,也存在 ”相同签名的方法不可以进行重载"的限制, 如图所示, 签名是方法的名称和形参的个数、类型的组合,但不包含返回类型。
相同签名的方法不可以重载, 换言之, 就是为了让调用方明确区分出要调用哪个方法,如果形参的类型和个数相同, 就不可以重载;对同—个类中签名不同的方法, 可以执行重载,赋予相同的名称。
计算两个数值中的最大值、三个数值中的最大值的方法(重载):
调用方法时并不需要指定调用哪一个方法、因为它们对应的方法会被自动选择,进行调用;
import java.util.Scanner;
class Max {
//--- 返回a, b中的最大值 ---//
static int max(int a, int b) {
return a > b ? a : b;
}
//--- 返回a, b, c中的最大值 ---//
static int max(int a, int b, int c) {
int max = a;
if (b > max) max = b;
if (c > max) max = c;
return max;
}
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.print("x的值:"); int x = stdIn.nextInt();
System.out.print("y的值:"); int y = stdIn.nextInt();
System.out.print("z的值:"); int z = stdIn.nextInt();
// 两个值中的最大值
System.out.println("x, y中的最大值是" + max(x, y) + "。");
// 三个值中的最大值
System.out.println("x, y, z中的最大值是" + max(x, y, z) + "。");
}
}
输出:对于执行相似处理的方法, 可以使用相同的名称, 进行重载[main不能重载]。
如果将计算两个数值中最大值的方法命名为 max 2, 将计算三个数值命名为max3, 那就会像银行账户的人名根据银行进行区分,
分别为"A银行”和“B银行“一样;
二、方法知识点总结
1、统一的操作可以通过方法控件来实现;
2、方法的名称、返回类型、形参列表、方法体等的定义就是方法声明;
3、方法可以使用方法调用运算符()进行调用;调用方法后程序流程会从调用方跳转到被调用的方法;
4、方法调用中的参数交换是通过值传递进行的,调用方传递的实参值会初始化方法中接收的形参;
即使被调用的方法内部改写了形参的值,调用方的实参值也不会发生改变
5、方法使用return语句来返同值,执行return语句后, 程序流程会返同到调用方;返回的值为方法调用表达式的值;
6、不返同数值的方法的返同类迎为void;
7、如果形参或返回类型为数组类型, 则可以接收数组或返回数组,这种情况下交换的是数组的引用。
8、所渭方法的签名.就是方法名和形参的个数、类型的组合,签名中不包含返回类型;
9、可以对同一个类中签名不同的方法进行重载,赋给它们相同的名称,这样就可以防止方法名称过度增加;
10、在方法外部声明的变量,即字段, 在该类的所有方法中都通用;而在方法内部声明的变量,即局部变量,只可以在该方法内部通用;
11、当相同名称的字段和局部变量同时存在时,字段会被隐藏但被隐藏的字段可以使用“类名.字段名“ 进行访问。