Well, if we view the ability to patch external code by extending a class as a feature, perhaps we should remove final
from the language. Cause right now the only reason you can do that kind of patching is because the author forgot to make his class final
. Otherwise if it’s his intention that clients can do this he would make his class open
in this new scheme.
That said, completely inverting open-final and/or private-public semantics is a huge change I’m not sure you can pull off after a language has existed for 15 years