Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Java Interface Rules

DZone's Guide to

Java Interface Rules

· Java Zone
Free Resource

Learn how to troubleshoot and diagnose some of the most common performance issues in Java today. Brought to you in partnership with AppDynamics.

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{

//1
public static final int x1 = 3;

//2
public static int x2 = 3;

//3
static int x3 = 3;

//4
int x4 = 3;

//5
public int f5();

//6
int f6();

//7
public static int f7();

//8
private void f8();

//9
public final void f9();

//10
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

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




Understand the needs and benefits around implementing the right monitoring solution for a growing containerized market. Brought to you in partnership with AppDynamics.

Topics:

Published at DZone with permission of Avi Yehuda, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

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

{{ parent.tldr }}

{{ parent.urlSource.name }}