<分区>
Possible Duplicate:
What does Base b2 = new Child(); signify?
我是 Java 初学者。我了解类继承的概念,但有一件事我不太了解。我正在阅读 Java for Dummies,它正在解释多态性。它以这段代码为例:
class Player {
public void move() {...
class BetterPlayer extends Player {
public void move() {...
public class TicTacToeApp {
public static void main(String[] args) {
Player p1 = new Player();
Player p2 = new BetterPlayer();
playTheGame(p1, p2);
}
public static void playTheGame(Player p1, Player p2) {
p1.move();
p2.move();
}
}
为什么将 p2 创建为 Player 对象?这是我的理解:
如果 p2 是一个 BetterPlayer 对象(声明如下:BetterPlayer p2 = new BetterPlayer...):
-向上转换是自动的,所以它仍然可以与 playTheGame 方法一起使用
-p2 可以被任何需要 BetterPlayer 对象的方法使用
但由于它是作为一个 Player 对象创建的,现在任何时候 p2 被需要 BetterPlayer 对象的方法使用时,它都必须显式转换为 BetterPlayer 对象,对吗?这似乎是没有任何好处的更多工作,所以我猜这样做一定有一些好处;这是什么?