Então, eu queria herdar de um sealed class
em csharp e me queimei. Simplesmente não há como separá-lo, a menos que você tenha acesso à fonte.
Então isso me fez pensar "por que sealed
existe?". há 4 meses. Não consegui descobrir, apesar de ler muitas coisas, como:
- Os desejos de Jon Skeet " foram selados por padrão no .NET " .
- Prefere composição sobre herança?
- "Você não deve selar todas as classes (...)"
- Como você zomba de uma classe selada?
Eu tentei digerir tudo isso desde então, mas é demais para mim. Eventualmente, ontem eu tentei novamente. Examinei todos eles novamente e mais alguns:
- Por que uma classe deveria ser outra coisa senão "abstrata" ou "final / selada"?
- Em mais de 15 anos de programação, pela primeira vez, ouvi falar do SOLID , de uma resposta de uma pergunta já vinculada e, obviamente, não li tudo há 4 meses
Finalmente, depois de muita reflexão, decidi editar fortemente a pergunta original com base no novo título.
A velha pergunta era muito ampla e subjetiva. Era basicamente perguntando:
- No título antigo: Um bom motivo para usar selado
- No corpo: Como modificar corretamente uma classe selada? Esqueça a herança? Usar composição?
Mas agora, entendendo (o que eu não fiz ontem) que tudo sealed
faz é impedir a herança , e nós podemos e devemos realmente usar a composição sobre a herança , percebi que o que eu precisava era de exemplos práticos .
Acho que minha pergunta aqui é (e de fato sempre foi) exatamente o que o Sr.Mindor me sugeriu em um bate - papo : como o design de herança pode causar um custo extra?