I don’t mind duplication at all. I mind undiscoverable duplication.

But if I have an interface and three subclasses with duplicated or almost duplicated code, this is quite easy to find.

That’s much nicer than an abstract base class where only some children override the methods, because now I need to check which ones actually do.