所有的人(Human),都有體重(weight)與威力(power),且體重等於威力
Human.java
public class Human {
public double weight = 0;
public double getPower() {
return this.weight;
}
public Boolean isEqualToPower(Human h) {
// 只要是人,都有取得自己威力的 method,叫做 getPower。
// 但是骨子裡,不同人種 getPower 的方式卻不一定相同。
// 這就是多型的應用。
return this.getPower() == h.getPower();
}
}
黑人天生的肌肉就比較強韌,可以發揮體重 1.5 倍的威力。(也可以擁有屬於黑人獨有的行為(black_method))
Black.java
public class Black extends Human {
public double getPower() {
return this.weight * 1.5;
}
public void black_method() {
// only for black
}
}
白人天生的肌肉也比一般人強韌些,可以發揮體重 1.2 倍的威力。也可以擁有屬於白人獨有的行為(white_method))
White.java
public class White extends Human {
public double getPower() {
return this.weight * 1.2;
}
public void white_method() {
// only for white
}
}
我們黃種人,體重跟威力,跟所有人類一樣,體重就等於威力。(不需要override getPower)
Yellow.java
public class Yellow extends Human {
public void yellow_method() {
// only for yellow
}
}
PolymorphismExample.java
public class PolymorphismExample {
public static void main(String[] args) {
Human y = new Yellow();
Human b = new Black();
Human w = new White();
y.weight = 12;
b.weight = 10;
w.weight = 10;
System.out.println(y.isEqualToPower(w));
System.out.println(b.isEqualToPower(w));
}
}
從 PolymorphismExample.java 可以知道,不同的人種,也可以進行威力的比較。
而從 Human.java 知道比較威力時,我們也只是站在人的立場,使用 getPower 來取得各自的威力。
可是雖然都是人,但是骨子裡的 getPower 卻會依據不同人種有不同的計算方式。這就是多型 (Polymorphism)
範例程式下載
PolymorphismExample.zip
我是黃種人,但是我可以使出體重的六倍力量。
回覆刪除你只能使出0.5倍的力量
刪除