gpt4 book ai didi

java - 将一种类型的对象声明为另一种类型的实例有什么好处?

转载 作者:搜寻专家 更新时间:2023-11-01 04:03:38 25 4
gpt4 key购买 nike

<分区>

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 对象,对吗?这似乎是没有任何好处的更多工作,所以我猜这样做一定有一些好处;这是什么?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com