java面向对象之方法重载

方法重载的概念

  • 一个类中的一组方法,具有相同的方法名字,不同的参数列表,作业的一组方法构成了方法重载

参数列表的不同体现在什么地方
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]);
        }
    }
  • 如果上述代码在方法调用时都不传参,默认会调用第一个无参数列表的方法

测试结果
无参数的方法

动态参数列表的方法不能与相同数组类型的方法构造方法重载,由于动态参数列表本质为数组,则此时在本类中不能存在相同类型的数组类型,编辑器会报错,告诉你方发已经被定义过了;此外动态列表的参数顺序必须放在末尾(只存在一份在此方法参数列表中),由于放在前面时编译器不知道你动态传参是否已经结束,因为参数是不限制的,所以无法辨别
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45608165/article/details/112137568