doInBackground () является абстрактным в SwingWorker, поэтому любой конкретный подкласс Task должен обеспечивать реализацию.
done (), однако, не является абстрактным в SwingWorker, поэтому никакой новой реализации не требуется. Если вы хотите заставить свои подклассы переопределить его, вам нужно:
abstract class Task extends SwingWorker<Void, Void>{
@Override
protected abstract void done();
}
Чтобы создать конкретный подкласс, просто расширьте Task, как если бы вы расширяли любой другой класс, и переопределите абстрактные методы с реализациями:
class SubTask extends Task {
@Override
protected void done(){
//implementation
}
@Override
public Void doInBackground(){
//implementation
}
}