0
点赞
收藏
分享

微信扫一扫

方法重写(Java)

胡桑_b06e 2022-03-13 阅读 66

方法重写(override,overwrite)

1.重写

子类继承父类后,可以对父类中同名同参数的方法,进行覆盖操作(重写的参数列表也是相同的,重载的参数列表是不同的)

2.应用

重写以后,当创建子类对象后,通过子类对象调用子类中与父类同名同参数的方法时,实际执行的是子类重写父类的方法

3.重写的规定

权限修饰符 返回值类型 方法名(参数列表)throws 异常类型 {方法体}
1)子类重写的方法的方法名和形参列表和父类被重写的方法的相同
2)子类重写的方法的权限修饰符 >= 父类被重写的方法的权限修饰符
特殊情况:子类不能重写父类中声明为private权限的方法
3)返回值类型:
i.父类被重写的方法的返回值类型是void,则子类重写的方法的返回值类型也是void
ii.父类被重写的方法的返回值类型是A类型,则子类重写的方法的返回值类型可以是A类或A类的子类
如父类中的一个方法:public Object eat(){},则子类中重写可以写成public String eat(){},因为String是Object的子类
iii.父类被重写的方法的返回值类型是基本数据类型,则子类重写的方法的返回值类型必须是相同的数据类型
4)子类重写的方法抛出的异常类型 <= 父类被重写的方法的抛出的异常类型(具体看异常处理的内容)
总结:权限大于父亲,返回和异常小于父亲
一般开发中都是直接把父类的方法粘贴到子类中再重写方法体的
子类和父类同名同参数的方法要么声明为非static的(这时要考虑重写的情况),要么都声明为static的(静态的就不是重写了)。

对于重写,指的是方法,方法重写之后,子类的方法覆盖父类的方法。而对于属性,子类的属性(如id)和父类的属性(如id)相同时,不能形成覆盖,即子类中既有子类的id又有父类的id。

不同包的子类只能调用父类的protected和public权限的结构(同一个包也是一样的)
不同包的普通类只能调用另一个包下面的类的public结构

举报

相关推荐

0 条评论