Это может показаться глупым вопросом, но я действительно долгое время изо всех сил пытался найти ответ самостоятельно. Так возможно ли это?
Например:
public class SuperClass {
public void methodToOverride(){
System.out.println("Some text");
}
}
public class SubClass extends SuperClass{
abstract void methodToOverride();
}
Да, и проблема в том, что у меня нет логического ответа, почему?
Было бы больше смысла, если бы вы добавили аннотацию @Override над подписью abstract void methodToOverride();?
Это прямо здесь, в спецификация языка: «Метод экземпляра, который не является абстрактным, может быть переопределен абстрактным методом».




Чтобы он заработал, вам потребуется всего лишь несколько настроек. Прежде всего, подкласс должен быть абстрактным, чтобы иметь абстрактные методы.
Во-вторых, метод methodToOverride не может иметь меньшую видимость, чем его родительский, поэтому вы должны сделать его общедоступным.
Затем он должен скомпилироваться и запуститься должным образом. Вот пример:
public class SuperClass {
public void methodToOverride(){
System.out.println("Some text");
}
}
public abstract class SubClass extends SuperClass{
public abstract void methodToOverride();
}
public class OtherClass extends SubClass {
@Override
public void methodToOverride() {
// new logic
}
}
При этом, конечно, странное моделирование ...
Надеюсь, это поможет!
Он компилируется и работает нормально?