多態中成員變量、成員方法等的特點
阿新 • • 發佈:2018-01-30
over 靜態 sof 父類引用 ride 來講 過多 引用 blog
1 public class Test { 2 public static void main(String[] args) { 3 Parent p = new Son(); 4 p.show(); 5 System.out.println("a的值為:"+p.a); 6 } 7 } 8 9 class Parent { 10 int a=10; 11 public Parent() { 12 System.out.println("父類無參構造,a的值為:"+a); 13 }14 public void show() { 15 System.out.println("父類方法"); 16 } 17 } 18 19 class Son extends Parent { 20 int a=20; 21 public Son() { 22 System.out.println("子類無參構造,a的值為:"+a); 23 } 24 public void show() { 25 System.out.println("子類方法"); 26 } 27 }
運行結果:
1父類無參構造,a的值為:10 2 子類無參構造,a的值為:20 3 子類方法 4 a的值為:10
【結論】
多態存在的三個必要條件 一、要有繼承; 二、要有重寫; 三、父類引用指向子類對象。
-----------------------------------------------------------------------------------------------------
1)Parent p = new Son(); //多態必須符合右側類(Son)包含於左側類(Parent),例如 動物 d = new 貓(),貓是動物。
2)構造方法:創造子類對象時,一定會先訪問父類構造方法,對父類數據進行初始化。
3)成員變量:通過多態調用的成員變量仍是父類的成員變量,因為成員變量不存在override(覆蓋)問題。
4)成員方法:通過多態調用的成員方法一般仍是父類中的方法,若在相應子類中被override(覆蓋),則調用子類重寫的方法。
5)靜態方法:通過多態調用的靜態方法仍是父類的靜態方法,因為靜態方法雖然能被子類的靜態方法“重寫”,但嚴格來講算不上是override(覆蓋)。
多態中成員變量、成員方法等的特點