面向小姐姐的编程——JAVA面向对象之继承(三)


面向小姐姐的编程——JAVA面向对象之继承(三)

方法重写(Override)

定义:

子类中出现和父类方法定义相同的方法的现象

解释:

方法重写也叫方法的复写、覆盖 方法名、参数列表、返回值类型都相同

注意事项:

  • 父类私有方法无法重写
  • 子类方法访问权限不能小于父类方法
  • 子类不能比父类方法抛出更大的异常(了解)

使用场景:

  • 扩展父类功能
  • 父类功能过时,重新实现父类功能

例题

还是以九阴白骨爪为例,在上一篇中写道子类的方法和父类的方法名一样,这实际就是一个方法重写,但当时没有加修饰符@Override,虽然不加也能重写父类方法,但加与不加是有一定区别的:

  1. 简单来说@override注解是告诉编译器,下面的方法是重写父类的方法

  2. 如果不写@override注解去直接重写方法,编译器是不会判断你是不是正确重写了父类中的方法的。如重写方法时参数与父类不同,程序是不会提示报错的。这会留下一个潜在的bug。当你写了@override注解时,程序会判断你是否正确的重写了父类的对应方法。而且加上此注解后,程序会自动屏蔽父类的方法。

这里我们在前面加上@override就是一个完整的方法重写了。
面向小姐姐的编程——JAVA面向对象之继承(三)

Java中的访问权限修饰符

面向小姐姐的编程——JAVA面向对象之继承(三)

案例:Java中四种访问权限演示

需求:

在不同的包、子父类中定义成员并在测试类中尝试访问

分析:

A. 在父类Person中分别定义四种权限修饰的方法
B. 在本包下创建测试类,在main方法中测试四个方法
C. 在其它包下创建类Student,并测试四个方法
D. 使Student类继承Person类,并测试四个方法

代码

  1. 在本类中,所有的方法都可以调用
    面向小姐姐的编程——JAVA面向对象之继承(三)

  2. 父类的private方法是不能重写的,也是不能被调用的,其余修饰符修饰的方法都是可以重写并调用的。
    面向小姐姐的编程——JAVA面向对象之继承(三)

  3. 这里我又创建了一个包,存放其子类,并进行方法重写和方法重载,可以看到,其protected修饰的方法是不能被调用的。 面向小姐姐的编程——JAVA面向对象之继承(三)

总结

  • private:强调的是给自己来使用.
  • 默认:强调的是给同包下的类来使用
  • protected:强调的是给子类使用.
  • public:强调的是给大家使用.

方法重写和方法重载的区别

面向小姐姐的编程——JAVA面向对象之继承(三)

Java中继承的特点

单继承

  • Java只支持类的单继承,但是支持多层(重)继承
  • Java支持接口的多继承,语法为: 接口A extends 接口B,接口C,接口D…
    面向小姐姐的编程——JAVA面向对象之继承(三)

私有成员不能继承

只能继承父类的非私有成员(成员变量、成员方法)
面向小姐姐的编程——JAVA面向对象之继承(三)

构造方法不能继承

构造方法用于初始化本类对象。
创建子类对象时,需要调用父类构造初始化该对象的父类内容,若父类构造可以被继承,该操作会造成调用的混乱。

继承体现了“is a”的关系

子类符合“is a(是一个)”父类的情况下,才使用继承,其它情况不建议使用
面向小姐姐的编程——JAVA面向对象之继承(三)

根据B站Java入门/黑马Java零基础Java在线教程最新Java编程而写,并有所改编,如有侵犯请联系。

一直在做比赛(用的python),java就没怎么学,但专业课是java,python不考啊啊啊啊啊

罢了,会一门语言再学其他的就简单多了,方法之前的比较简单,就不写了,为了不挂科,后面的内容肯定会慢慢补充的。

当然还有老师布置的一些题目(在我看来比较难!!!)与大家一起分享,共同进步。

欢迎大家关注点赞!!!

面向小姐姐的编程——JAVA面向对象之继承(三)