gpt4 book ai didi

java - 接收派生自抽象类的对象作为方法中的参数

转载 作者:行者123 更新时间:2023-12-02 05:18:51 24 4
gpt4 key购买 nike

我是 Java 新手,目前正在学习抽象类。目前我正在创建一个简单的角色扮演游戏。假设我有一个名为 Person 的抽象类,它扩展为另外两个类:WarriorWizard

现在假设我有另一个名为 Weapon 的抽象类,从那里我们可以创建不同类型的武器(剑、斧头、弓等..),它们共享一些基本方法,可以被覆盖由其他继承类,例如 attack()maintenance()

Person(WizardWarrior)在某个时刻调用attack()方法时游戏中,我需要知道谁是攻击者,谁是防御者(表明我可以修改他们的生命条状态、武器的耐久度等)。

(这本质上意味着,在 attack() 方法中接收两个对象作为参数)。

所以这就是我陷入困境的地方。攻击者-防御者的组合可以是巫师-战士巫师-巫师、战士-巫师或战士-战士

我应该如何在 Weapon 类中实现 attack() 方法,以便它可以允许我接收一个对象作为参数,而不关心该对象是否正在运行成为巫师还是战士?这可能吗?

例如做这样的事情?

void attack(Person attacker, Person defender)
{
// add method logic here

}

提前致谢。

最佳答案

没有真正回答问题,但为什么不将 attack 移至 Person 类,然后你可以像这样写出来

class Person
public void attack(Person target, int damage) {
target.setLife(life - damage);
// or target.damage(damage), or however else you want to implement that
...
}

然后

myWarrior.attack(evilWizard, myWeapon.getDamage);

这对我来说似乎更有意义,因为将进行攻击。

关于java - 接收派生自抽象类的对象作为方法中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26662116/

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