Thank you for your lengthier reply. It demonstrates respect for the community.
[Semi-closed classes by default] lacks the safety benefits of the “all closed” design, and it lacks the ease-of-use benefits of the “all open” design.
What do you mean by “safety”? If you’ve thought it through and know what you mean by it, then you should explain it. These are the three possibilities that come to my mind which I’ve addressed.
- Safety for well-meaning developers: preventing routine coding mistakes and runtime exceptions.
- Safety against bad developers: preventing inexperienced/lazy devs coding things in a way that causes maintenance headaches down the line.
- Safety against hackers: preventing the cooption of program behavior or security guarantees with malicious derived classes.