关于Java中方法重写的访问修饰符和返回值类型的限制

来源:互联网 发布:人工智能柴玉梅版答案 编辑:程序博客网 时间:2024/04/30 04:18

众所周知,Java中方法重写的要求是方法签名完全相同。

方法签名是指 方法名+参数列表 。

而父类中或接口中的方法的时候重写方法的时候,除了方法签名完全相同之外,访问修饰符和返回值类型有什么限制吗?

答案是肯定的。

访问修饰符的开放范围由大到小排序是 public > protected > default > private

private类型是子类无法继承下来的,  所以父类中private修饰的方法并不能被子类重写。


废话不多说,接下来进入重点。

经过笔者的多次测试,发现访问修饰符和返回值类型虽然不必与父类中的方法相同,但也不是完全没有限制。

方法重写时:

子类中方法的访问修饰符必须 >= 父类中对应方法的访问修饰符  (访问修饰符大小关系已在本文中列出)

子类中方法的返回值类型可以和被重写方法的返回值类型相同,或者是被重写方法类型的子类型。

即   子类中方法的返回值类型必须 <=  父类中对应方法的返回值类型

以上结论对于抽象方法的实现同样适用。


因为在JDK1.7及以前的版本中,接口中所有的方法都默认是public类型的。所以说接口中的方法被重写时,其子类重写方法的访问修饰符必须是public.


由于笔者水平有限,还请大家多多批评指正。得意

阅读全文
2 0