只有非private方法才可以被覆盖

在Java中,只有非private方法才可以被覆盖;但是还需要密切注意覆盖private方法的现象,虽然编译器不会报错,但是也不会按照我们所期望的来执行。确切地说,在导出类中,对于基类中的private方法,最好采用不同的名字。

示例
public class PrivateOverride{
private void f(){print(“private f()”;}
public static void main(String[] args){
PrivateOverride po=new Derived();
po.f();
}
}

class Derived extends PrivateOverride{
public void f(){print(“public f()”;}
}
/* output:
private f()
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
我们所期望的输出是public f(),但是由于private方法被自动认为是final方法,而且对导出类是屏蔽的。因此,在这种情况下,Dervied类中的f()方法就是一个全新的方法,没有重载基类中的f()方法。

作者:Star_Ship
来源:CSDN
原文:https://blog.csdn.net/zhoucheng05_13/article/details/77834883
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/huanchankuang3257/article/details/83315753