面向小姐姐的编程——JAVA面向对象之继承(三)
文章目录
方法重写(Override)
定义:
子类中出现和父类方法定义相同的方法的现象
解释:
方法重写也叫方法的复写、覆盖 方法名、参数列表、返回值类型都相同
注意事项:
- 父类私有方法无法重写
- 子类方法访问权限不能小于父类方法
- 子类不能比父类方法抛出更大的异常(了解)
使用场景:
- 扩展父类功能
- 父类功能过时,重新实现父类功能
例题
还是以九阴白骨爪为例,在上一篇中写道子类的方法和父类的方法名一样,这实际就是一个方法重写,但当时没有加修饰符@Override,虽然不加也能重写父类方法,但加与不加是有一定区别的:
-
简单来说@override注解是告诉编译器,下面的方法是重写父类的方法
-
如果不写@override注解去直接重写方法,编译器是不会判断你是不是正确重写了父类中的方法的。如重写方法时参数与父类不同,程序是不会提示报错的。这会留下一个潜在的bug。当你写了@override注解时,程序会判断你是否正确的重写了父类的对应方法。而且加上此注解后,程序会自动屏蔽父类的方法。
这里我们在前面加上@override就是一个完整的方法重写了。
Java中的访问权限修饰符
案例:Java中四种访问权限演示
需求:
在不同的包、子父类中定义成员并在测试类中尝试访问
分析:
A. 在父类Person中分别定义四种权限修饰的方法
B. 在本包下创建测试类,在main方法中测试四个方法
C. 在其它包下创建类Student,并测试四个方法
D. 使Student类继承Person类,并测试四个方法
代码
-
在本类中,所有的方法都可以调用
-
父类的private方法是不能重写的,也是不能被调用的,其余修饰符修饰的方法都是可以重写并调用的。
-
这里我又创建了一个包,存放其子类,并进行方法重写和方法重载,可以看到,其protected修饰的方法是不能被调用的。
总结
- private:强调的是给自己来使用.
- 默认:强调的是给同包下的类来使用
- protected:强调的是给子类使用.
- public:强调的是给大家使用.
方法重写和方法重载的区别
Java中继承的特点
单继承
- Java只支持类的单继承,但是支持多层(重)继承
- Java支持接口的多继承,语法为: 接口A extends 接口B,接口C,接口D…
私有成员不能继承
只能继承父类的非私有成员(成员变量、成员方法)
构造方法不能继承
构造方法用于初始化本类对象。
创建子类对象时,需要调用父类构造初始化该对象的父类内容,若父类构造可以被继承,该操作会造成调用的混乱。
继承体现了“is a”的关系
子类符合“is a(是一个)”父类的情况下,才使用继承,其它情况不建议使用
注
根据B站Java入门/黑马Java零基础Java在线教程最新Java编程而写,并有所改编,如有侵犯请联系。
一直在做比赛(用的python),java就没怎么学,但专业课是java,python不考啊啊啊啊啊
罢了,会一门语言再学其他的就简单多了,方法之前的比较简单,就不写了,为了不挂科,后面的内容肯定会慢慢补充的。
当然还有老师布置的一些题目(在我看来比较难!!!)与大家一起分享,共同进步。
欢迎大家关注点赞!!!