what is a usage pattern for "static" in an interface?

Steven Schveighoffer schveiguy at yahoo.com
Sat Feb 4 19:50:15 PST 2012


On Fri, 03 Feb 2012 02:30:31 -0500, dennis luehring <dl.soluz at gmx.net>  
wrote:

> like:
>
> public interface test
> {
>    public static void blub();
> }
>
> static class test_static: test
> {
>    private static void blub()
>    {
>       int i = 10;
>    }
> }
>
> int main()
> {
>    test_static.blub();
>
>    return 0;
> }
>
> any idea why static could makes sense in an interface? any example?
>
> another thing:
>
> why can i public "blub" in the interface and private it in the class?

static methods are not polymorphic.  The only possible reason to include a  
static method in an interface is purely for namespace purposes.  If a  
static method does not contain an implementation in an interface, it  
should not compile, because there will never be an implementation for it  
-- static methods do not go in the vtable.  In other words, static methods  
could be useful inside an interface definition, but they would not be part  
of the "interface" that an implementing class needs to provide.

note that:

interface test
{
   public static int blub(){return 5;}
}

is no different than:

int blub() {return 5;}

interface test
{
}

except for the namespace blub exists in.

I could see a use case for protected static methods in an interface.   
public ones to a lesser degree, private ones should be outlawed.

-Steve


More information about the Digitalmars-d mailing list