rincípio aberto-fechado e modificador "final" do Ja

O princípio aberto-fechado afirma que "entidades de software (classes, módulos, funções, etc.) devem estar abertas para extensão, mas fechadas para modificação"

Joshua Bloch, em seu famoso livro "Java Efetivo", oferece os seguintes conselhos: "Projeta e documenta a herança, ou a proíbe", e incentiva os programadores a usar o modificador "final" para proibir a subclass

Acho que esses dois princípios se contradizem claramente (estou errado?). Qual princípio você segue ao escrever seu código e por quê? Você deixa suas aulas abertas, desaprova a herança de algumas delas (quais?) Ou usa o modificador final sempre que possíve

questionAnswers(7)

yourAnswerToTheQuestion