In my ideal coding world, I’d allow default implementations for protocols but otherwise completely ban inheritance (other than what is required by AppKit and UIKit).

Subclasses (and sub-sub-classes, etc.) are just not worth the jumping around and keeping things in my head.