On Mon, 29 Aug 2011 16:24:46 -0400, Jonathan M Davis <jmdavisp...@gmx.com> wrote:

On Monday, August 29, 2011 14:09 Mariusz Gliwiński wrote:
<code>
interface Interface {
Interface method();
}
class Class : Interface {
override Class method() {}
}
</code>

DMD complains it isn't overriding. How should it be according to
specification, and how about making it legal?

It's _not_ overriding. It's implementing an interface method. Those are two totally different things. And I think that it's horrible that Java considers implementing an interface method as overriding it. I'd _hate_ to see that in
D.

Then this must be a bug?

interface I
{
  void foo();
}

class C : I
{
   override void foo(); // compiles
}

I feel override should be *allowed* when implementing interface functions (but not required). Otherwise, you get into situations where a base class decides to become abstract (doesn't implement a function), but a derived class is specifying override (especially if override is required, as is planned), if that's a compiler error, I think it's a useless error.

-Steve

Reply via email to