Quindi volevo ereditare da a sealed class
in csharp e mi sono bruciato. Non c'è modo di annullarlo se non si ha accesso alla fonte.
Poi mi ha fatto pensare "perché sealed
esiste?". 4 mesi fa. Non sono riuscito a capirlo, nonostante abbia letto molte cose a riguardo, come:
- I desideri di Jon Skeet "le classi sono state sigillate di default in .NET " .
- Preferisci la composizione rispetto all'eredità?
- "Non dovresti sigillare tutte le classi (...)"
- Come si fa a deridere una classe Sealed?
Ho provato a digerire tutto da allora, ma è troppo per me. Alla fine, ieri ho provato di nuovo. Ho scansionato di nuovo tutti loro, oltre a pochi altri:
- Perché una classe dovrebbe essere diversa da "astratta" o "finale / sigillata"?
- In oltre 15 anni di programmazione, la prima volta che ho sentito parlare di SOLID , per una risposta da una domanda già collegata e ovviamente non l'ho letto tutto 4 mesi fa
Alla fine, dopo molte riflessioni, ho deciso di modificare pesantemente la domanda originale in base al nuovo titolo.
La vecchia domanda era troppo ampia e soggettiva. Fondamentalmente stava chiedendo:
- Nel vecchio titolo: una buona ragione per usare sigillato
- Nel corpo: come modificare correttamente una classe sigillata? Dimentica l'eredità? Usa la composizione?
Ma ora, comprendendo (cosa che non ho fatto ieri) che tutto sealed
ciò che fa è prevenire l'eredità , e possiamo e dovremmo davvero usare la composizione sull'eredità , ho capito che ciò di cui avevo bisogno erano esempi pratici .
Immagino che la mia domanda qui sia (e in effetti lo sia sempre stata) esattamente cosa mi ha suggerito Mr.Mindor in una chat : in che modo la progettazione per l'eredità può causare costi aggiuntivi?