Ответ 1
Вы не можете заставить метод быть переопределенным - то, что для абстрактных методов (которые вы указали, не является опцией).
Одна из возможностей заключается в том, чтобы метод в базовом классе выбрал UnsupportedOperationException
. Затем подкласс должен переопределить его, чтобы предотвратить выброс ошибки. Таким образом, вы можете, по крайней мере, определить, был ли метод переопределен.
Например:
public class Father {
public void method ( ) {
throw new UnsupportedOperationException( );
}
}
public class Child1 extends Father {
}
public class Child2 extends Father {
public void method ( ) {
// Do something useful here...
}
}
Вызов Child1.method()
будет бросать UnsupportedOperationException
, указывая, что он не переопределил Father
method()
. Вызов Child2.method()
не будет генерировать исключение, что означает, что он переопределил method()
.