Подтвердить что ты не робот

Java: Как заставить данный защищенный метод перегружать дочерние классы?

Отцовский класс не является и не может быть абстрактным. Метод перегрузки защищен, поэтому интерфейсы там не могут быть использованы.

Имея в виду эти два ограничения, можно ли это сделать?

4b9b3361

Ответ 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().

Ответ 2

Вы можете отправить исключение UnsupportedOperationException из родителя. Это не поможет во время компиляции, но будет во время выполнения.

Ответ 3

Так как абстракция не является вариантом, вы можете вызвать метод NotImplementedException. Это более явное исключение, чем UnsuppotedOperationException.
Примечание.. Это не помешает компиляции кода и будет генерировать исключение только во время выполнения.

Public Clazz {
    public void methodToOverride(){
        Throw new NotImplementedException();
    }
}

Некоторые примеры выполнения:
Apache
Sun
sharkysoft.com