Java Programming - Language Fundamentals - Discussion

Discussion Forum : Language Fundamentals - General Questions (Q.No. 10)
10.
Which is the valid declarations within an interface definition?
public double methoda();
public final double methoda();
static void methoda(double d1);
protected void methoda(double d1);
Answer: Option
Explanation:

Option A is correct. A public access modifier is acceptable. The method prototypes in an interface are all abstract by virtue of their declaration, and should not be declared abstract.

Option B is wrong. The final modifier means that this method cannot be constructed in a subclass. A final method cannot be abstract.

Option C is wrong. static is concerned with the class and not an instance.

Option D is wrong. protected is not permitted when declaring a method of an interface. See information below.

Member declarations in an interface disallow the use of some declaration modifiers; you cannot use transient, volatile, or synchronized in a member declaration in an interface. Also, you may not use the private and protected specifiers when declaring members of an interface.

Discussion:
20 comments Page 2 of 2.

Ujjawal said:   10 years ago
I don't think it would hurt if we add abstract also like public. Just it is not required.

Shubham Garg said:   9 years ago
Option B is wrong because final means we can't inherit the method or without inheritance how can we give the definition.

Option C is wrong because static means class instance or class instance can't inherit its can't be protected.

Valenitne said:   8 years ago
A static method can be declared in an interface but it must have a body.

Yogesh said:   7 years ago
Since in Java 9, option C is right. We can declare and add behaviour to a static function in the interface.

Abhishek Podder said:   6 years ago
The private method is allowed in JDK 9.0 onwards but they cannot be used with abstract or default modifier.

Charan said:   6 years ago
Why can't we use protected?

Kathir said:   6 years ago
Why protect method is not declaration in interface?

Vivek Singh said:   5 years ago
@All.

By default interface definition has public abstract.

So even if we do not declare it inside the interface the compiler automatically convert it into public abstract.

Hence, public double methoda(); is correct answer.

public double methoda(); = public abstract double methoda(); = double methoda();

Even if we remove access modifier i.e public and abstract keyword compiler it automatically append public abstract for the above method for an interface if it is not containing at the time of compile.
(2)

Dhwanil said:   5 years ago
Based on JAVA 8, option 3 is correct.
(3)

Rukshana said:   3 months ago
Very useful, Thanks everyone for explaining.


Post your comments here:

Your comments will be displayed after verification.