Java Programming - Language Fundamentals - Discussion
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.
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.
Option C is wrong because static means class instance or class instance can't inherit its can't be protected.