Java 重写(Override)与重载(Overload)

本文详细探讨了Java中的重写(Override)和重载(Overload)概念,解释了重写如何体现多态性,以及重写和重载的规则。通过实例展示了重写时必须保持方法名、参数列表和访问权限的一致性,以及重载时可以改变参数列表或返回值类型来实现。

Java 重写(Override)与重载(Overload)

重写和重载实现了Java的三大特性(封装,继承,多态)中的多态性

一、重写(Override)

重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。
方法重载的规则

接下来拿下面的代码作为例子。
代码中定义了两个类People,Teacher, Teacher继承了People类,重写了People中的work()方法。

	class People{
        public void work(){
            System.out.println("人在工作");
        }
    }

    class Teacher extends  People{
        @Override
        public void work() {
            System.out.println("教师在工作");
        }
        public void teaching(){
            System.out.println("教师在上课");
        }
    }

    @Test
    public void testOverride(){

        People p1=new People();
        People t1=new Teacher();
        p1.work();
        t1.work();
    }

运行结果如下图所示:
在这里插入图片描述
可见,t1执行的是Teacher重写后的代码。

接下来,将测试的代码修改一下,如下图所示:

你会发现t1.teaching();这条语句报错,原因是People类中没有teaching()这个方法,所以报错。
在这里插入图片描述
想要消除这个错误,就需要将t1的引用定义为Teacher类,如下图所示:
在这里插入图片描述
此时,代码不再报错,执行结果如下图所示:
在这里插入图片描述

二、重载

  • 方法重载的规则
  • 重载最常用的地方就是类构造函数的重载
  • 重载的方法中,方法名相同,返回值可相同也可不相同,但参数一定都是不相同的
1.返回值类型相同,参数不同

这里依然拿上面的People类作例子,此时重载work()方法,如下图所示:
在这里插入图片描述
两个work函数中,依照方法重载的规则,方法名相同,参数不相同,编译通过。

2.返回值类型不相同,参数类型相同

在这里插入图片描述
此时IDE工具提醒 People中已用参数类型为int的work()方法,说明重载的方法中,方法参数列表必须不相同,而方法的返回值的相同与否,并不会影响方法的重载。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值