Arrière-plan:
En tant que programmeur Java, j'ai largement l'héritage (plutôt: mettre en œuvre) des interfaces, et parfois j'conception de classes de base abstraites. Cependant, je n'ai jamais vraiment ressenti le besoin de sous-classe concrète (non abrégé) de la classe (dans le cas où je le faisais, il s'est avéré plus tard qu'une autre solution, comme la délégation aurait été mieux).
Donc, maintenant, je commence à sentir qu'il n'y a presque pas de situation où l'héritage d'une classe concrète est approprié. Pour une chose, le principe de substitution de Liskov (LSP) semble presque impossible à satisfaire pour les non-trivial classes; également de nombreuses autres questions ici, semblent faire l'écho d'une opinion similaire.
Donc ma question:
Dans quelle situation (le cas échéant) est-elle vraiment un sens pour hériter d'une classe concrète? Pouvez-vous donner un béton, dans le monde réel exemple d'une classe qui hérite d'une autre classe de béton, où vous pensez que c'est la meilleure conception en tenant compte des contraintes? J'ai b'être particulièrement intéressés par les exemples qui répondent à la LSP (ou des exemples où la satisfaction LSP semble sans importance).
J'ai surtout un Java arrière-plan, mais je suis intéressé par des exemples à partir de n'importe quelle langue.