---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------
一、認識多型
1,多型體現:父類引用指向自己子類物件
class fu
}class zi extends fu
}
fu f1 = new fu();
zi z = new zi();
fu f3 = new zi();
分析上例中fu f1 = new fu()和zi z = new zi();不是多型只有fu f3 = new zi()是多型可以看出是fu類的引用f3指向了自己子類物件new zi()。
2,多型前提
2.1,類與類之間存在特定關係,繼承或實現(介面)
2.2,存在覆蓋,
3,好處
提高程式的擴充套件性,父類提供功能子類去實現具體功能
class animal
}class dog extends animal
}class cat extends animal
}class feeder
}
feeder f = new feeder();
f.feed(new dog());//列印dog eat bone
f.feed(new cat());//列印cat eat fish
上面例子中feeder類的feed方法的引數為animal型別,那麼當有其它類繼承了animal後,就可以將其傳進feed方法,當執行eat方法時呼叫子類的相應的eat方法,完成子類的eat的動作,這樣不必針對每個子類進行編譯相應的**,而用同乙個**都能完成,因此多型提高了程式的可擴充套件性
4,多型的侷限性
只能使用父類的引用訪問父類中的成員,如要訪問子類的特有方法需要將父類的引用強制轉換成子類型別,但要注意不能將父類 物件轉成子類型別,多型中自始自終都是子類物件在變化。
class animal
}class cat extends animal
void catchmouse()
}
class feeder
}
feeder類中的feed方法a.eat()是正確的,如果執行a.catchmouse()就會報錯因為catchmouse()是子類cat特有方法,而父類animal並沒有這個方法,因此程式會報錯。如果要訪問必須將animal轉換成子類物件即
cat c = (cat)a;
c.catchmouse();
二、多型**中的特點
1,多型中成員函式的特點
1.1,在編譯時期參閱引用變數所屬的類中是否有呼叫的方法,如果有,編譯通過,如果沒有,編譯失敗。
1.2,在執行時期參閱物件所屬的類中是否有可呼叫的方法。
class animal
}class cat extends animal
void catchmouse()
}
animal a = new cat();
a.eat();//編譯通過,執行時參閱cat的eat()方法列印cat eat fish
a.catchmouse();//編譯失敗
2,多型中成員變數
無論在編譯還是執行時期都參考引用變數所屬的類
class fu
}class zi extends fu
}
fu f = new zi();
system.out.println(f.i);//編譯時期看fu類,編譯通過,執行時仍然看父類因此列印1
3,多型中靜態成員函式
無論編譯還是執行都參考引用變數所屬的類
class fu
}class zi extends fu
}
fu f = new zi();
f.show();//列印fu.show
---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------
詳細請檢視:
黑馬程式設計師 多型
asp.net android ios rel noopener noreferrer target blank asp.net android ios開發 net rel noopener noreferrer target blank net培訓 期待與您交流!多型 理解為事物存在的多種體現形似...
黑馬程式設計師 多型
多型 可理解為事物存在的多種體現形態。人 男人 女人 動物 貓 狗 貓 c new 貓 動物 c new 貓 可理解為父類引用指向子類物件,是多型在物件上的體現性。而過載和覆蓋則是多型在函式上的體現性。下面將從以下四個方面學習多型 1 多型的表現形式 父類的引用指向了自己的子類物件。父類的引用也可以...
黑馬程式設計師 多型
問題點 如何具體理解父類的引用?答 這個父類就是這個子類的另一種形態,可指向 多型的通俗理解 說白了,乙隻貓過來了,可以說 這貓好可愛 也可以說 這小動物很可愛 就是說貓具備了 貓 和 動物 這兩種形態,多型就這樣理解!動物 y new 貓 看到這樣的現象就可以看做是多型的出現了!多型的好處 父類引...