Java方法重写注意事项,附带继承,子类与父类相关内容

方法重写

继承(子类与父类)

方法重写是在继承中实现的一个方法,他依赖于继承。
在继承中,当一个类在类方法后使用extends继承另一个方法,那么使用extends的类为子类;被调用的类为父类。
在这里插入图片描述
在这里插入图片描述

子类继承父类的所有方法与成员变量(属性),意思就是在父类中的所有方法与成员变量都可以在子类中使用。

在这里插入图片描述

在这里插入图片描述
那么既然子类能继承所有的父类方法,那么为了方便用户操作,子类也可以对父类中的方法进行“修改”,那就是所谓的方法重写
子类在重写父类方法以后,子类会隐藏在父类中于其相同方法名的方法,意思是父类被隐藏方法不会再被执与调用
在这里插入图片描述

方法重写不得不注意的事项

1.方法名和参数列表必须一致

方法名一致才可以重写到父类中指定的方法,而参数列表不一致的话就引出另一个知识点:方法的重载,参数列表不一致的话就相当于原方法被重载,虽然方法名还是一样,但是调用的已经是另一个方法了。参数列表一不一致只是变量的类型,而不是变量的名字,参数列表不一致包括(数据类型的顺序、数量、类型不一致)。

2.子方法的异常跳出范围不能大于被重写的父类方法。

在这里插入图片描述
(throws子句不兼容父级)

3.子方法里面需要重写的方法访问权限,需要比父类方法里被重写的方法访问权限大。
修饰符 同一个类中 同一个包中 子类 不同包中
public Yes Yes Yes Yes
protected Yes Yes Yes
default Yes Yes
private Yes

如果子类重写的类的方法访问权限小于了父类被访问的类的方法方法权限就会报错Cannot reduce the visibility of the inherited method from Parent(无法降低从父级继承的方法的可见性)
在这里插入图片描述

4.private(私有的)修饰类的话是不支持被继承的,所以无法重写private修饰的方法。static(静态的)修饰的方法也不能被重写。虽然在子类中可以存在与父类中private方法和static方法相同名称的方法,但是并不存在多态,所以并不是重写。

(此文章灵感来自于:罗罗的1024)

猜你喜欢

转载自blog.csdn.net/qq_49249150/article/details/107391876
今日推荐