public abstract int attack(Object object); // here is my abstract method from Character class
public int attack(Hero hero){ // this method from monster class
int currentHeroHealth;
int reducedDamage;
System.out.println("You have been attacked by monster!");
int attackDamage = getAttackDamage();
int attackSpeed = getAttackSpeed();
int attack = attackDamage * attackSpeed;
if(attack<hero.getArmor()){
reducedDamage=hero.getArmor()-attack;
}
else{
reducedDamage=attack-hero.getArmor();
}
currentHeroHealth=hero.getHealthPoints()-reducedDamage;
hero.setHealthPoints(currentHeroHealth);
return currentHeroHealth;
}
public int attack(Monster monster) { // this method from hero class
System.out.println("You attacked to monster!");
int currentMonsterHealth=monster.getHealthPoints()-HitPoints;
if(currentMonsterHealth==0){
System.out.println("You defeated the monster"+monster.getName());
monster.setHealthPoints(0);
}
else {
monster.setHealthPoints(currentMonsterHealth);
}
return currentMonsterHealth;
}
您正在寻找Java泛型。这是一个例子:
public abstract class Charachter<T> {
public abstract int attack(T object);
}
您声明类character
要使用T
类型的参数进行参数化。
public class Monster extends Character<Hero> {
@Override
public int attack(Hero object) {
//your implementation
}
}
您声明您的Monster
类使用类型Hero
扩展基类,这样参数将为Hero
。
public class Hero extends Character<Monster> {
@Override
public int attack(Monster object) {
//your implementation
}
}
想象一下,我有一个抽象类动物的方法: 然后我有一个类,用以下内容扩展这个抽象类: 我希望每个扩展Animal的类都有一个fetch()方法。然而,fetch方法为相关动物指定了一些独特的特征(狗的爪子、猫的爪子等)。例如,cat的fetch()将获取参数fetch(fellinecat kitty)并表示: 因此,抓取方法接受了扩展抽象类“动物”(因此是动物)的参数。我在“动物”中定义了抓取()方
所以,问题是:我有一个抽象基类(),它有一个抽象成员方法()。方法返回布尔值,并应检查是否相等,但“相等”在子类中可能有不同的解释,因此我不重写或。因为它测试是否与另一个与其类型相同的对象相等,所以签名如下所示: 现在,当我试图在类中重写它时,假设“”,我不能使用作为参数的类型。我知道一般情况下这样做的原因和添加类型界限的建议,但是事情变得更加复杂,因为参数类型是它自己的类。 有没有什么平滑的方法
问题内容: 当其中的所有方法都是具体的时,有人在声明类抽象时有一些实际的编程情况吗? 问题答案: 好吧,您可能正在使用模板方法模式,其中存在多个都具有默认实现的覆盖点,但是组合的默认实现本身不合法-任何功能实现都必须是子类。 (是的,我不喜欢模板方法模式;)
只是延伸问题... 抽象类和接口中的相同方法 假设一个类实现了一个接口并扩展了一个抽象类,两者都有相同的方法(名称签名),但返回类型不同。现在,当我重写方法时,只有当我使返回类型与接口声明相同时,它才会编译。 另外,如果该方法在抽象类或接口中声明为private或final,会发生什么情况? **旁注。在一次采访中,爱因斯坦先生在这个问题上坚持了相当长的时间。有没有一个流行的场景,我们这样做,或者
我不熟悉泛型。我有一个抽象类(1)和一个抽象方法。我有另一个抽象类(2)和一些抽象方法,我希望在一些DTO(3,4)中共享这些抽象方法。我想要一个(1)的具体扩展来处理任何扩展(2)的东西。 1. 扩展StagingError的两个类:3.
问题内容: 我想验证以下行为的方法如下。 在我的@Test类中,我希望做这样的事情来验证是否使用“ exception.message”和再次使用“ exception.detail”进行了调用 但是Mockito抱怨如下 我如何告诉Mockito检查两个值? 问题答案: 进一步的阅读使我尝试使用ArgumentCaptors和以下作品,尽管比我想要的更为冗长。