Привет, я новичок в java, и в настоящее время у меня есть два класса (useForce и Attack), которые работают нормально, но эти два класса имеют много общего кода. Чтобы уменьшить дублирующийся код, я расширил использование класса Force из класса Attack, но я я не уверен, как изменить код?
Например, в моем attack.java
public class Attack extends SWAffordance implements SWActionInterface {
some code here...
@Override
public boolean canDo(SWActor a) {
SWEntityInterface target = this.getTarget();
return !a.isDead() && target.getHitpoints()>0;
}
@Override
public void act(SWActor a) {
SWEntityInterface target = this.getTarget();
boolean targetIsActor = target instanceof SWActor;
SWActor targetActor = null;
int energyForAttackWithWeapon = 1;//the amount of energy required to attack with a weapon
if (targetIsActor) {
targetActor = (SWActor) target;
}
Но те же два метода в моем useForce.java это
public class UseForce extends Attack {
some code here....
@Override
public boolean canDo(SWActor a) {
return a.getForcepoints()>=minUsePoints;
}
@Override
public void act(SWActor a) {
SWEntityInterface target = this.getTarget();
boolean targetIsActor = target instanceof SWActor;
SWActor targetActor = null;
int energyForForceAttack = 2;//the amount of energy required to use force
if (targetIsActor) {
targetActor = (SWActor) target;
}
Как вы можете видеть, эти два разделяют много похожих строк кода в методе act, за исключением Attack.java int energyForAttackWithWeapon = 1, тогда как в useForce int energyforAttackWithWeapon = 2 ...
Как использовать super или override для уменьшения количества строк дублированного кода? Любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ: Если я использую сторонний класс для извлечения дублированного кода, как мне это сделать, потому что Attack уже распространяется от SWAffordance?