我學會了所有這些編程術語在瑞典,所以請多多包涵..的Java多態性問題
我有調用子類中的方法,該方法應該重寫超類中的方法問題。
這裏是階級結構與刪除代碼:
public interface Movable {
public void move(double delta);
}
public abstract class Unit implements Movable, Viewable{
public void move(double delta){
System.out.println("1");
}
}
public class Alien extends Unit{
public void move(long delta){
System.out.println("2");
}
}
public class Player extends Unit{
public void move(long delta){
System.out.println("3");
}
}
public void main(){
ArrayList<Unit> units = new ArrayList<Unit>();
Unit player = new Player();
Unit alien = new Alien();
units.add(player);
units.add(alien);
for (int i = 0; i < this.units.size(); i++) {
Unit u = (Unit) this.units.get(i);
u.move();
}
}
這將輸出1和1,但我希望它輸出2和3
我在做什麼錯?我認爲這是它的工作原理。
Doh>。<謝謝! :) – Baversjo 2009-11-04 17:56:06