1. 程式人生 > 程式設計 >通過例項分析java多型

通過例項分析java多型

這篇文章主要介紹了通過例項分析java多型,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

首先來看這樣的一段程式碼,其中對於類的定義如下:

class Parent{
  public int myValue=100;
  public void printValue() {
    System.out.println("Parent.printValue(),myValue="+myValue);
  }
}
class Child extends Parent{
  public int myValue=200;
  public void printValue() {
    System.out.println("Child.printValue(),myValue="+myValue);
  }
}

我們來一個一個的回答問題:

1.執行結果如圖

2.對於這個執行結果的解釋,第一行第二行都是正常的呼叫,第三行中,將child賦給了parent 再進行的輸出,這時候我們發現結果變成了200 並且輸出語句也變了。

第四句,執行了parent.myValue++;但結果並沒有改變。第五行中,將parent類強行轉換為子類後又進行了自增,結果變成了201.

3.對於這裡的分析,我們發現子類賦值給父類是沒有問題的,也就是說子類完全可以直接轉換成父類。第四行的語句結果還是200,說明他對於myValue的++還是呼叫了父類中的Value,但最後還是輸出了子類的Value.說明子類賦給父類後,只是一部分替代,並不是完全覆蓋。第五句裡,將父類轉換成子類然後進行++,第四句第五句結合起來,可以說明子類賦值給父類,並不是所謂的覆蓋,只是把原本的東西給隱藏了罷了。而強制轉換後則不同,直接變成了子類。

最後,這其實告訴我們在實際應用中,我們不應該把父類和子類設定成相同的原始碼和成員變數,對於程式設計師在程式設計時的理解十分不利。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。