重写和重载的区别对比

重载(Overload):编译时的多态性

指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
特点:

  • 方法名相同,参数列表不同(参数个数,参数类型,参数顺序)
  • 返回值类型可以相同可以不同
  • 可以抛出不同的异常

应用:
多用于构造方法的重载

class OverloadTest{
	//重载时参数顺序不同也可以,但前提时参数类型不同
    public static void method(String s,int a){
        System.out.println("方法1");
    }
    public static void method(int a,String s){
        System.out.println("方法2");
    }

    //构造方法的重载应用较多
    OverloadTest(int v,String s){
        System.out.println("构造方法1");
    }
    OverloadTest(String s,int v){
        System.out.println("构造方法2");
    }
}

重写(覆写,Override):运行时的多态性

当子类继承父类后,如果想要修改,可以用方法的重写

特点:

  • 方法名,参数列表相同
  • 返回值类型相同
  • 访问限定符不可以比父类的被重写方法的更严格,即子类的重写方法被访问的范围与父类相同或者更广,不可以更窄
  • 不可以抛出新的受查异常或更广泛的受查异常,可以抛出非受查异常
  • 不可以重写被final修饰的方法
  • 不可以重写被static修饰的方法

应用:
子类需要修改继承自父类的方法时应用

class OverrideTest{
    public void method(){
        System.out.println("父类的方法");
    }
}
class Son extends OverrideTest{
    @Override//子类重写父类方法时可以加上这个注解,自动帮你校验重写格式是否正确
    public  void method(){
        System.out.println("子类重写的方法");
    }
    public static void methodB(){
        System.out.println("子类的方法");
    }
}

public class OverrideOrOverloadDemo {
    public static void main(String[] args) {
        new OverrideTest().method();
        new Son().method();
        OverrideTest ot = new Son();
//        ot.methodB();//以引用为准,引用为OverrideTest,该类中的没有方法methodB(),因此会报编译错误
        ot.method();//当子类重写了父类的方法时,调用子类的重写的方法
    }
}

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值