Must you `override` when implementing an interface?

P T Withington ptw at pobox.com
Mon Mar 26 11:35:12 PDT 2007


On 2007-03-26, at 14:11 EDT, Jeff Dyer wrote:

>
>> The question came up in the context of documenting methods,
>> distinguishing methods that are being defined in the class (and are
>> not part of an interface).  In that sense, an `implement` attribute
>> would have some of the benefit of `override` in catching type-ohs:
>> the compiler could signal an error if you define a method as
>> implementing an interface and there is no matching interface.
>
> It already does. In AS3/draft-ES4 it is a static error if any of the
> inherited interface methods is not implemented in the inheriting  
> class,
> unlike in Java. Partially implemented (or abstract) classes don't  
> exist
> in ES4.

I'm considering the case where I define a method that I think is part  
of an interface but it is not:

interface A {
   function x ();
}

class B implements A {
   function x () {...};
   function y () {...};
}

function (a:A) {
   a.y();
}

Possibly unlikely, and yes, you get an error at the call site, but if  
I had to say:

class B implements A {
   implement function x () {...};
   implement function y () {...};
}

The compiler could warn me that there is no interface method `y` in  
the interfaces implemented by B.  Perhaps useful in an IDE or where  
separate compilation is going on?  I'm comparing that to the override  
case where I declare a method as being an override but there is no  
such method in the super chain.



More information about the Es4-discuss mailing list