1. 程式人生 > >java動手動腦之多型

java動手動腦之多型

1.java的語法特性:

 1 public class ParentChildTest {
 2     public static void main(String[] args) {
 3         Parent parent=new Parent();
 4         parent.printValue();//1
 5         Child child=new Child();
 6         child.printValue();//2
 7         
 8         parent=child;//將子類賦值給父類value變為200
 9         parent.printValue();//
3,輸出200 10 11 parent.myValue++;//父類的value+1,對子類的value之不改變 12 parent.printValue();//4 13 14 ((Child)parent).myValue++;//先進行強制轉化變為子類型別,值不會變化,在加一201 15 parent.printValue(); 16 17 } 18 } 19 20 class Parent{ 21 public int myValue=100;//101 22 public
void printValue() { 23 System.out.println("Parent.printValue(),myValue="+myValue); 24 } 25 } 26 class Child extends Parent{ 27 public int myValue=200;//201 28 public void printValue() { 29 System.out.println("Child.printValue(),myValue="+myValue); 30 } 31 }

輸出顯示為:

結論:(1)子類父類要有一樣的方法才能實現這樣的賦值,子類可以賦值給父類,父類不可以賦值給子類,因為子類繼承於父類,是父類的衍生類,通俗說就是:兒子的可以是父親的,但父親的不一定是兒子的。

(2)當子類與父類有相同的方法時,讓父類變數引用一個子類物件時,以物件的型別來呼叫,這是面向物件多型的特徵的具體現。

(3)覆蓋:子類有與父類相同的方法時,要在子類中呼叫父類的物件,可以使用super關鍵字

注意:當子類被當作弗雷來使用時,通過子類訪問的欄位是父類的。