On Thu, 30 Jan 2014 13:06:30 -0500, Frustrated <c1514...@drdrb.com> wrote:

On Thursday, 30 January 2014 at 17:38:26 UTC, Steven
Schveighoffer wrote:
This is a misunderstanding, you still need to declare a class, because an interface is not a concrete type. But if there are default implementations for all the interface functions, you don't need to implement any of them!


No, the point is, if all methods are defined, there is no need to
create the class. Why create an empty class to instantiate it
when the compiler can do it for you and you can instantiate the
interface? This is what I mean by treating the interface as a
class because for all purposes it is. (an interface is just an
abstract container but it doesn't have to be)

Again, all this could be done by the compiler internally by
creating a class to back an interface and add it to the vtable.
Instantiating the interface just returns that class. Calling a
member on the interface's object calls the member of that class,
who's body is provided in the interface definition.

I can do this now, the whole point is I don't like code
duplication! ;)

interface A
{

      void foo() { writeln("me"); }
      void bar();
}

class _A  // created internally by compiler
{
      void foo() { writeln("me"); } // added by compiler copied
from A
      void bar() { assert(0, "error"); } // added by compiler
}

http://dlang.org/phobos/std_typecons.html#.BlackHole

-Steve

Reply via email to