On Monday, August 29, 2011 15:18 Mariusz Gliwiński wrote: > Jonathan M Davis wrote: > > It's _not_ overriding. It's implementing [...] > > Whether it's called overriding or implementing isn't a big deal for me. In > D we *already* write _override_ keyword to _implement_ method (IMO it's > good choice, to match with overriding class methods). > > > But back to the topic, it would be like that: > * we have object which implements interface > * we have method that returns objects implementing this interface > * we want to return object which implements this interface > * we can't return it as class (implementation of interface + something > more), because we have to be seen ONLY as implementation of this interface > > result: > We have to declare method, that returns child object, then make a proxy to > narrow and override interface. So it looks like: > <code> > Class real_method() {} > override Interface method() {stupid_method();} > </code> > > Ps. If someone felt offended by calling "object, that implements interface" > a "child object", i'm sorry for that.
This seems to compile just fine: interface Interface { Interface method(); } class Class : Interface { Class method() {return new Class;} } The problem is the override keyword. _No_ overriding is going on. _That's_ why it's complaining. - Jonathan M Davis