On Sunday, 11 August 2019 at 20:32:14 UTC, John Colvin wrote:
As I see this, everything you wrote is correct. :)
But you compared abstractness with interface usage, initially.
So... I would say, interfaces are more like the abstract
method case without any function body. But then, you will have
to use "override" all across the inherited classes.
Ok. So that means the difference is pretty subtle, give or take
a few extra keywords.
Which leaves multiple inheritance as the only significant
From my perspective it looks like there are two massively
overlapping features with some quite arbitrary feeling
restrictions and differences. E.g. why can I not inherit from
multiple 100% abstract empty classes? Wouldn't that be the same
as inheriting from multiple interfaces?
The overlap is there, but it is not so massive, I would say. If
you inherit from abstract classes, then you do not plan to keep
So, the overlap you are speaking about is exactly as large as the
amount of "100% abstract empty classes". And for these, the
approach to keep the interface as a separate interface seems more
convenient, as Adam said.
In the end, by forcing an explicit override, some semantic is