多態
1.多態相關概念
面向對象的程序設計特點:多態、繼承、封裝
動態綁定:在運行時根據對象類型調用相應的方法。
後期綁定:在運行時根據對象的類型進行綁定。
java中除了static方法和final方法(private方法屬於final方法),所有方法都是後期綁定。域和靜態方法不可多態,因爲是在編譯期初始化 。
多態(也被成爲動態綁定、後期綁定和運行時綁定):將整個繼承體系的對象作爲同一類對象使用,代碼可以毫無差別的應用在這些類上。
由於有多態機制,可以根據自己的需要在系統中添加任意多的新類型,但不用改變相應的方法,這樣的程序是可擴展的。
2.向上轉型
向上轉型:將派生類作爲基類使用。用以基類爲參數的方法應用在派生類上。
3.組合和繼承
在建立新類時應該首先考慮採用組合的方法,因爲在程序運行中可以改變引用,但是無法改變類的繼承關係。可以說,組合更具有靈活性。
4.一段有趣的程序:
public class RandomShapeGenerator {
private Random rand = new Random(47);
public Shape next() {
switch(rand.nextInt(3)) {//隨機產生數字,決定生成何種對象
default:
case 0: return new Circle();
case 1: return new Square();
case 2: return new Triangle();
}
}
}
Shape[] s = new Shape[9];
for(int i = 0; i < s.length; i++) {
s[i] = gen.next();//爲隨機生成的對象產生一個引用
}