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 1 of 2.

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)

Vikas grover said:   1 decade ago
Because static method are only concerned with name of the class itself. Means they are accessible through the name of the class. So that is why method in interfaces can not be static. Because which class implements that interface has to create object of that class and this is not in case of static.

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.

Gourav said:   1 decade ago
I still not understand why final and static options are not right as we always said methods of interface should public static and final then why these options: option B and option C are wrong.

Bishal said:   1 decade ago
As it is clear from the option only a can be use to declare d interface.

b & c can't be because of final & static keyword respectively as they use in case of class but in interface.

Venkat said:   1 decade ago
@Utpal.

Interface may contain declaration of method but, not its implementation. That method have to be necessarily implemented in subclass.

Anki said:   1 decade ago
No its not about methods, this line is for variables or can say data members, they must be declared public static and final.

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.

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.

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


Post your comments here:

Your comments will be displayed after verification.