Модификаторы abstract и final с методами и классами

Классы

Абстрактный класс по определению предназначен для наследования. Финальный класс — его противоположность: наследование финальных классов невозможно. Если ваш класс не предназначен для наследования, он должен быть финальным.

public final class Nokia3310 extends MobilePhone {

Тогда можно быть уверенным в том, что любая Nokia3310 ведёт себя только так, как описано в этом классе.

Примеры финальных классов из java.lang: System, String, Math.

Методы

Если класс предназначен для наследования (не финален), но определённая часть его поведения должна остаться неизменной, можно запретить переопределение отдельных методов:

public abstract class MobilePhone extends Phone {
    
    private String serialNumber;
    private String imei;
    
    private int batteryVoltage;
    // никаких пиратских Nokia, чёрт побери!
    public final String getDisplayVoltage() {
        return batteryVoltage + " мВ";
    }
    
}
Комментарии к уроку

Сообщить об ошибке