В настоящее время я читаю «Эффективная Java» Джошуа Блоха и пункт 17 «Дизайн и документ для наследования или запрет». Автор предлагает запретить наследование по умолчанию.Может ли удаление окончательного из определения класса нарушить обратную совместимость?
Можно ли объявить классы окончательными по умолчанию, а в более позднем выпуске удалить ключевое слово final, если есть необходимость расширить класс? Будет ли он нарушать обратную совместимость с кодом, который был скомпилирован с предыдущей версией?
Если это так, то это более безопасная ставка, чтобы сделать все классы окончательными и удалить ее только в будущей версии, если есть хорошо поддержанный спрос.
Это зависит от того, сколько у вас живого, дыхательного API. Если вы постоянно вносите изменения и выпускаете, не так уж плохо ждать неделю, чтобы получить возможность наследовать. Если, с другой стороны, Java по умолчанию применил свои базовые классы JDK, это заставит программистов до слез ждать 5 лет для «исправления». –
@ Kirk Woll, если потребуется 5 лет, чтобы перейти от финала к нефиналу, сколько времени потребуется, чтобы перейти от нефинального к финалу? – emory