Что здесь важно: что A
- это B
или A
- это Runnable
?
Если это первое (или важно, чтобы оно было B
и Runnable
), вы ничего не можете сделать: B.run
является окончательным, а окончание означает, что вы не можете переопределить его.
Если это последнее, используйте композицию:
class A implements Runnable {
final B b; // initialize on field or in constructor.
@Override public void run() {
// Your implementation, calling methods/fields on b
// where you need the behaviour/data of B.
}
}