Java中的覆盖和重载

一、覆盖(重写)(Overriding)

覆盖是什么?
举个例子:

package offer;
public class TestDemo{
    public static void main(String[] args){
    new Human().eat();
    new Father().eat();
    }
}
class Human{
    public void eat(){
        System.out.println("吃饭");
    }
}
class Father extends Human{
    public void eat(){
        System.out.println("不吃饭");
    }
}

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

由以上可知:
该例中子类继承了父类,但重写了父类的方法,虽然是从父类中拿到的方法但重写之后与父类方法有了区别,因此称为覆盖(即子类方法覆盖了父类方法)

二、重载(Overloading)

重载是什么?
举个例子:

package offer;
public class TestDemo{
    public static void main(String[] args){
        new Human().person();
        new Human().person(6);
        new Human().person(6,"帅");

    }
}
class   Human{
    public void person(){
        System.out.println("高");
    }
    public void person(int i){
        System.out.println(i+" "+"富");
    }
    public void person(int i,String j){
        System.out.println(i+" "+j);
    }
}

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

由此可知:
该例子里写了多个print方法,但参数不同,因此可以运行,这也就是重载的含义,一个类中可以有多个同名不同参(参数列表不同)的方法。

三、两者之间的区别

区别覆盖重载
实现上子类对父类方法的重写同一个类中建立多个同名方法
参数与父类同名同参与别的方法同名不同参
返回子类与父类返回类型要一致没有要求
权限1.子类不能覆盖父类的private方法,否则在其子类中只是新定义了一个方法,并没有对重写 2.被重写的不能是final类型,因为final类型是无法重写的 3.被重写的不能是static无此要求
重写次数父类一个方法只能在子类覆盖一次重载只要参数不同,可以多次
要求覆盖是针对父类方法的重写同类中的方法均可重载
异常重写要求子类比父类抛出更少的异常无此要求
-重载是编译时的多态重写是运行时多态
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~四时春~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值