В этом случае вам не нужно указывать этот метод в абстрактном классе. Он будет возмущаться пока кто-то его не реализует
Использование абстрактного класса дает вам возможность задать поведение по умолчанию. Даже если вы в абстрактном классе не определите тело методов интерфейса, а переложите все на конкретные классы, то использование абстрактного класса будет иметь смысл если в нем будет определен хоть один метод с общим для всех потомков поведением.
Был у меня как то пример такой:
Два типа работников ленивый и усердный наследуются от абстрактного работника. Абстрактный Работник был наблюдателем (интерфейс) и реагировал на счетчик времени в симуляции. В абстрактном классе определен метод рассчета количества сделаной работы. Причем параметры для расчета задекларированы в абстрактном классе. А в конкретный работник в конструкторе указывает значения этих параметров
Вот кусок из main
Clock cl = new Clock();
HardWorker hw = new HardWorker();
cl.addObserver(hw);
for(int i=daystart;i<=dayend;i++){
cl.tick();
}
Вот абстрактный работник
import java.util.Observable;
import java.util.Observer;
import java.util.Random;
public abstract class AbstractWorker implements Observer {
protected double workunitsDone;
protected int lunchUnitsDone;
protected int lunchDuration;
protected int lunchTotal;
protected double productivity;
boolean lunch=false;
Random r = new Random();
double lunchProb;
int lunchTaken=0;
void setProgress() {
if (lunch && lunchTaken<lunchDuration){
lunchTaken=lunchTaken+1;
lunchTotal=lunchTotal+1;
}
else{
lunch=false;
lunchTaken=0;
if (r.nextInt(101)<lunchProb){
lunch = true;
}else{
workunitsDone=workunitsDone+productivity;
}
}
}
double getWorkunitsDone(){ return workunitsDone;
}
int getLunchUnitsDone(){return lunchTotal;
}
}
А вот усердный работник
import java.util.Observable;
import java.util.Random;
public class HardWorker extends AbstractWorker {
public HardWorker() {
super();
this.lunchDuration = 6;
this.lunchProb = 6;
this.productivity=1.1;
}
@Override
public void update(Observable o, Object arg) {
setProgress();
}
}