On Wednesday, 7 August 2013 at 07:11:58 UTC, SteveGuo wrote:
I like the concept of interface, It enforces its successors to implement some necessary methods.

Please take a look at the following example:

device.d
---------------------------------
interface device
{
// I want the three methods implemented by its successors
    void PowerOn();
    void PowerOff();
    void Reset();

string signature; // This is not allowed in D, but every device should has a signature.
}

Why it doesn't support non-static members?
Actually in many cases, we need an interface which needs enforce its successors to implement necessary methods, meanwhile it needs has its own non-static members.


Use properties. Interfaces cannot require fields but can require methods. A property is a getter and setter method that wraps a field.

So instead ing string signature; use @property string signature();

Then for all practical purposes you can treat it as a field.

Reply via email to