[Issue 2050] interfaces should allow final methods with body
Robert Fraser
fraserofthenight at gmail.com
Mon Apr 28 03:05:56 PDT 2008
d-bugmail at puremagic.com wrote:
> http://d.puremagic.com/issues/show_bug.cgi?id=2050
>
>
>
>
>
> ------- Comment #2 from andrei at metalanguage.com 2008-04-28 02:21 -------
> (In reply to comment #1)
>> That would open the door to the dreaded diamond pattern.
>>
>> You'd just have the compiler generate ambiguity errors in those cases I
>> suppose?
>
> The diamond pattern can't occur in schemes with single inheritance of
> implementation.
That's true, but the purpose of interfaces is to allow for multiple
inheritance in a safe way. Say you have two interfaces, IZombie from
Library A and IPirate from Library B. You have a class ZombiePirate that
implements both these interfaces. Right now, IZombie has a final method
"dance()", and IPirate has the dance() method as virtual. All is well,
since a call to an instance's dance() method would result in
IZombie.dance()'s implementation being called. But if IPirate suddenly
got a dance() implementation, your code would break simply by updating
Library B.
More information about the Digitalmars-d-bugs
mailing list