1. 程式人生 > >只有非private方法才可以被覆蓋

只有非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
版權宣告:本文為博主原創文章,轉載請附上博文連結!