jWeaver jWeaver - 1 year ago 103
Java Question

What is the purpose of the default keyword in Java?


An interface in Java is similar to a class, but the body of an
interface can include only abstract methods and
final
fields
(constants).


Recently, I saw a question, which looks like this

interface AnInterface {
public default void myMethod() {
System.out.println("D");
}
}


According to the interface definition, only abstract methods are allowed. Why does it allow me to compile the above code? What is the
default
keyword?

On the other hand, when I was trying to write below code, then it says
modifier default not allowed here


default class MyClass{

}


instead of

class MyClass {

}


Can anyone tell me the purpose of the
default
keyword? Is it only allowed inside an interface? How does it differ from
default
(no access modifier)?

Answer Source

It's a new feature in Java 8 which allows an interface to provide an implementation. Described in Java 8 JLS-13.5.6. Interface Method Declarations which reads (in part)

Adding a default method, or changing a method from abstract to default, does not break compatibility with pre-existing binaries, but may cause an IncompatibleClassChangeError if a pre-existing binary attempts to invoke the method. This error occurs if the qualifying type, T, is a subtype of two interfaces, I and J, where both I and J declare a default method with the same signature and result, and neither I nor J is a subinterface of the other.

What's New in JDK 8 says (in part)

Default methods enable new functionality to be added to the interfaces of libraries and ensure binary compatibility with code written for older versions of those interfaces.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download