Java方法重载和方法重写的区别

方法重载:在同一个类中,允许存在多个同名方法,只要它们的参数列表不同,与修饰符和返回值类型无关,这样的多个同名方法之间构成重载。
参数列表:参数个数,参数类型,参数顺序
方法调用:根据实际传入的参数决定调用哪个方法。

代码示例:

public class OverloadTest {
    public static void main(String[] args) {
        //根据实际传入的参数决定调用哪个方法
        sum();
        System.out.println(sum(15));;
        System.out.println(sum(10.5d, 15.3d));;
    }

    public static void sum() {
        System.out.println(10 + 10);
    }

    private static int sum(int a) {
        return a + 10;
    }

    static double sum(double a, double b) {
        return a + b;
    }
}

方法重写:当父类中的方法对于子类来说不适用时,子类可以对从父类中继承来的方法进行重写/覆写。
方法调用:根据对象所属的类决定调用哪个类的方法。

代码示例:

class Father {
    void show() {
        System.out.println("Father show");
    }
}

class Son extends Father {
    @Override
    public void show() {
        System.out.println("Son show");
    }
}

public class OverrideTest {
    public static void main(String[] args) {
        Father f1 = new Father();
        f1.show();
        //多态引用,实际创建还是子类对象,调用的也是子类重写的show方法
        Father f2 = new Son();
        f2.show();
    }
}

区别总结

重载重写
定义位置同一个类中父类(接口)、子类(实现类)
方法名必须相同必须相同
形参列表必须不同必须相同
返回值类型无关如果是基本数据类型和void,必须一致;如果是引用数据类型,重写方法的返回值类型必须和被重写方法的返回值类型相同或是它的子类
权限修饰符无关重写方法的访问权限必须 大于或等于 被重写方法的访问权限
方法调用根据传递的实际参数根据对象的类型
抛出的异常无关重写方法抛出的异常类型要么和被重写方法相同,要么是被重写方法抛出的异常的子类,要么不抛出异常
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值