Why declare an interface as abstract?

Viewed 34580

What's point of declaring an interface as abstract? Same thing for an interface method. Is there a point to it?

eg.

public abstract interface Presenter {
 public abstract void go(final HasWidgets container);
}
11 Answers

Where did you come across the chunk of code you have posted, any old java code base ?
This is what the JLS has to say :

9.1.1.1 abstract Interfaces:
Every interface is implicitly abstract. This modifier is obsolete and should not be used in new programs.

9.4 Abstract Method Declarations:
For compatibility with older versions of the Java platform, it is permitted but discouraged, as a matter of style, to redundantly specify the abstract modifier for methods declared in interfaces.

Interfaces and interface methods are implicitly abstract even if not declared as so. So there is no need to explicitly specify it.

Makes no difference - interfaces and interface methods are always abstract but you don't have to add the modifier (and interface methods are always public so you don't need the public modifier too).

From the JLS:

9.1.1.1 abstract Interfaces

Every interface is implicitly abstract. This modifier is obsolete and should not be used in new programs.

Typically, you don't declare the interface, or its methods, as abstract. They are implicitly.

The methods are also public, so you can skip that also. :-)

The default behavior of an interface is essentially equivalent to what you have in your example. Defining it as abstract is just redundant.

I think just verboseness, explicitness and consistency with the class syntax and semantics...

You don't have to, but maybe it could help if some reader of your code is distracted or not very versed in Java.

There is no point of declaring interface to be abstract. As the methods in the interface are abstract only.. One more thing abstract class can have both concrete and abstract methods but in the interface there should be only abstract methods.

Question: Can we declare an Interface with “abstract” keyword? Answer: Yes, we can declare an interface with “abstract” keyword. But, there is no need to write like that. All interfaces in java are abstract by default. Same applies to interface methods

Please go throw this link https://javaconceptoftheday.com/java-interview-questions-on-interfaces/

INTERFACE CAN HAVE STATIC METHOD SINCE JAVA8

Related