Over a million developers have joined DZone.

Java Interface Rules

DZone's Guide to

Java Interface Rules

· Java Zone ·
Free Resource

Take 60 minutes to understand the Power of the Actor Model with "Designing Reactive Systems: The Role Of Actors In Distributed Architecture". Brought to you in partnership with Lightbend.

Let’s start with a short Java question:

Bellow you can see the interface ‘Test’.
Which lines in that interface will be rejected by the compiler?

public interface Test{

public static final int x1 = 3;

public static int x2 = 3;

static int x3 = 3;

int x4 = 3;

public int f5();

int f6();

public static int f7();

private void f8();

public final void f9();

private static final int x5 = 3;

The answer is:

lines: 7,8,9,10

I am sure that even many of the experienced java developers will not have a 100% success answering this question because it can be confusing.

1, 2, 3 and 4 are actually all the same – only constants are allowed and by default they are. For that reason, 10 is not allowed.
5, 6 are the same – only public and protected methods are allowed. By default they are public.

In short these are the rules for interfaces:

Member variables
Can be only public and are by default.
By default are static and always static
By default are final and always final

Can be only public and are by default.
Can NOT be static
Can Not be Final

Learn how the Actor model provides a simple but powerful way to design and implement reactive applications that can distribute work across clusters of cores and servers. Brought to you in partnership with Lightbend.


Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}