作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦
CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者
前言
在前面的两篇文章中,壹哥给大家讲解了面向对象中的封装和继承,现在还有一个多态没有给大家讲到。但是在学习多态之前,我们需要提前知道“方法重写”是怎么回事,因为方法重写是实现多态的一个必要条件。所以如果我们不知道方法重写是咋回事,学习多态也就会有点费劲。废话少说,直接上干货!
--------------------------------------------------前戏已做完,精彩即开始----------------------------------------------
全文大约【4000】字,不说废话,只讲可以让你学到技术、明白原理的纯干货!本文带有丰富的案例及配图视频,让你更好地理解和运用文中的技术概念,并可以给你带来具有足够启迪的思考......
配套开源项目资料
Github:
Gitee:
一. 方法重写
在面向对象中,实现多态的必备条件是继承、重写和向上转型,现在我们已经学习了什么是继承。接下来我们再来学习什么是方法重写,这是我们能够实现多态的前提。
1. 概念
如果我们在子类中,创建了一个与父类中名称、返回值类型、参数列表都完全相同的方法,只是方法体的功能实现不同,这种方式被称为方法重写(override),或者叫方法覆盖。当父类中的方法无法满足子类的需求,或者子类需要有特殊功能时,就可以进行方法重写。
2. 基本要求
我们在进行方法重写时,需要遵循以下几点要求:
- 父类的成员方法只能被它的子类重写,即不能继承一个方法,就不能重写这个方法;
- 被final修饰的方法不能被重写;
- 被static修饰的方法不能被重写,但可以再次声明;
- 构造方法不能被重写;
- 子类和父类在同一个包中时,子类可以重写父类中除了被private和final修饰的其他所有方法;
- 子类和父类不在同一个包中时,子类只能重写父类被public和protected修饰的非final方法;
- 重写的方法建议使用@Override注解来