Inheritance hasn't stand the test of time. It is common understanding among experienced developers, that inheritance does not really add something, what couldnt have done without, while the issues classes have are tremendous. I think, Ilya puts it best:
«There’s no objective and open evidence that OOP is better than plain procedural programming.The bitter truth is that OOP fails at the only task it was intended to address. It looks good on paper — we have clean hierarchies of animals, dogs, humans, etc. However, it falls flat once the complexity of the application starts increasing. Instead of reducing complexity, it encourages promiscuoussharing of mutable state and introduces additional complexity with its numerous design patterns. OOP makes common development practices, like refactoring and testing, needlessly hard.»
you can safely replace «OOP» with «Classes» and it would still be valid.
https://betterprogramming.pub/object-oriented-programming-the-trillion-dollar-disaster-92a4b666c7c7
I myself designed an architecture in swift, that does not require classes. I'd appreachiate your thoughts: