Java:子類是否只繼承父類的非私有變量和方法?

Java中私有變量能否被子類繼承?

最近在看OCJP的題庫,看到有部分題就是在考察多態中的繼承相關,

在CSDN論壇上相關大家說法也是衆多紛紜,下面簡單例子說明相關關係

[java] view plain copy
 print?
  1. public class TestExtends {  
  2.       
  3.     public static void main(String[] args) {  
  4.         Father f = new Son();  
  5.         Son s = new Son();  
  6. ●       f.FMethod();  // 斷點所在位置  
  7.         s.FMethod();  
  8.     }  
  9. }  
  10.   
  11. class Father{  
  12.     protected int k = 0;  
  13.     private int p = 1;  
  14.     private final int q = 100;  
  15.     public void FMethod(){}  
  16. }  
  17.   
  18. class Son extends Father {  
  19. }  


❶在斷點watch結果:


通過斷點的watch可以看到在子類實例了父類後,無論是私有成員,還是final類型的私有成員,在子類裏都可以被“看到(被繼承)”。


❷書寫代碼部分截圖

 


通過Eclipse編譯器可以看到:在子類是無法訪問父類私有成員的


總結:

     ❶關於私有成員變量
         無論父類中的成員變量是pirvate、public、還是其它類型的,子類都會擁有(繼承)父類中的這些成員變量。但是父類中的私有成員變量,無法在子類中直接訪問,可以通過從父類中繼承得到的protected、public方法(如getter、setter方法)來訪問。

個人認爲這更好的提現了JAVA特性中的封裝,而且符合軟件工程的設計思想:低耦合

     ❷關於靜態成員變量
         無論父類中的成員變量是靜態的、還是非靜態的,子類都會擁有父類中的這些成員變量。

     ❸關於被子類覆蓋的成員變量
         無論父類中的成員變量是否被子類覆蓋,子類都會擁有父類中的這些成員變量。

轉載地址:http://blog.csdn.net/dietime1943/article/details/52926390

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章