gpt4 book ai didi

java - 对象类型可以由它的父类(super class)定义吗?

转载 作者:行者123 更新时间:2023-12-02 04:59:54 26 4
gpt4 key购买 nike

我有一个父类(super class),它定义了一些子类。我有另一个类,它有一个方法,该方法将传递一个扩展父类(super class)的对象参数。如果对象的类型设置为父类(super class),是否仍可以将子类传递给方法?抱歉,如果没有意义。我可以添加一些代码作为示例。提前致谢

编辑:

public class Unit {
some code.
}

public class Infantry extends Unit {
some code.
}

public class DamageCalculator {

public double calculateDamage(Unit unit, double damage) {
Some code.
}

如果我传递一个 Infantry 类型的对象,编译器会抛出一个错误,指出步兵对象不是 unit 类型吗?

最佳答案

你的例子会编译得很好。由于 Infantry 的实例是一种 Unit 类型,因此您可以将其传递给方法calculateDamage。编译者会对此感到高兴。如果已在子类中重写,则对单位的任何方法calculateDamage调用都将调用单位或步兵上的适当方法。这称为“运行时多态性”。

public class Unit { }

public class Infantry extends Unit { }

public class DamageCalculator {

public double calculateDamage(Unit unit, double damage) {
return damage; // presumably return unit.getStrength() * damage;
}

}

public class Main {
public static void main(String [] a) {
Unit i = new Infantry();
DamageCalculator damageCalculator = new DamageCalculator();
double damage = 0.1;
double result = damageCalculator.calculateDamage(i, damage);
}
}

关于java - 对象类型可以由它的父类(super class)定义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28384382/

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