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()方法,说明重载的方法中,方法参数列表必须不相同,而方法的返回值的相同与否,并不会影响方法的重载。
本文详细探讨了Java中的重写(Override)和重载(Overload)概念,解释了重写如何体现多态性,以及重写和重载的规则。通过实例展示了重写时必须保持方法名、参数列表和访问权限的一致性,以及重载时可以改变参数列表或返回值类型来实现。
906

被折叠的 条评论
为什么被折叠?



