方法重载的概念
- 一个类中的一组方法,具有相同的方法名字,不同的参数列表,作业的一组方法构成了方法重载
参数列表的不同体现在什么地方
1.参数的个数(0个、1个、多个)
2.参数的类型
3.参数的顺序
方法重载示例
public void test(){
System.out.println("无参数的方法");
}
public void test(int i){
System.out.println("传入int类型的方法,值为:"+i);
}
public void test(char c){
System.out.println("传入char类型的方法,值为:"+c);
}
public void test(boolean flag){
System.out.println("传入boolean类型的方法,值为:"+flag);
}
public void test(String str){
System.out.println("传入String类型的方法,值为"+str);
}
//传入多个参数的重载方法
public void test(int id,String name){
System.out.println("传入多个参数的重载方法,值分别为:"+id+"---"+name);
}
//传入多个参数不同顺序的重载方法(此时调用方法时传入参数要按顺序传入)
public void test(String name,int id){
System.out.println("传入多个参数的重载方法,值分别为:"+name+"---"+id);
}
- 方法重载有什么作业:为了让使用者便于记忆与调用,只需要记住方法的名字即可,执行不同的操作
调用方法重载注意点
- 方法调用时,首先通过方法名来定位方法
- 如果方法名字有一致,可以通过参数的数据类型来定位方法
- 如果没有与传递参数类型一致的方法,可以找一个参数类型进行转化的方法(自动),例如char类型和int类型可以相互转化;如果没有对应的参数类型,看是否能强制转化类型
public class TestMain {
public void test(){
System.out.println("无参数的方法");
}
public void test(int c){
System.out.println("传入int类型的方法,值为:"+c);
}
//main函数程序的入口
public static void main(String[] args) {
TestMain testMain = new TestMain();
//传入int类型的值,自动转化为char类型
testMain.test('a');
}
}
测试结果
传入int类型的方法,值为:97
public class TestMain {
public void test(){
System.out.println("无参数的方法");
}
public void test(char c){
System.out.println("传入char类型的方法,值为:"+c);
}
//main函数程序的入口
public static void main(String[] args) {
TestMain testMain = new TestMain();
//没有int类型的值,强制转化类型
testMain.test((char)97);
}
}
执行结果
传入char类型的方法,值为:a
JDK1.5版本之后出现动态参数列表
写法为:参数类型… 参数名
类型为固定,参数个数动态,从0~n个均可,此类型本质相当于数组结构
方法示例
public void test(){
System.out.println("无参数的方法");
}
public void test(int... i){
System.out.println("传入动态参数的重载方法");
for (int j = 0; j <i.length ; j++) {
System.out.println(i[j]);
}
}
- 如果上述代码在方法调用时都不传参,默认会调用第一个无参数列表的方法
测试结果
无参数的方法
动态参数列表的方法不能与相同数组类型的方法构造方法重载,由于动态参数列表本质为数组,则此时在本类中不能存在相同类型的数组类型,编辑器会报错,告诉你方发已经被定义过了;此外动态列表的参数顺序必须放在末尾(只存在一份在此方法参数列表中),由于放在前面时编译器不知道你动态传参是否已经结束,因为参数是不限制的,所以无法辨别