Skip to content
Sharp

Core Java · interview question

Why might the following code result in a compilation error? abstract class Service { abstract void execute(); } class Shipping extends Service { void execute() { System.out.println("Shipping executed"); } } public class Main { public static void main(String[] args) { Service s = new Shipping(); s.execute(); } }?

Multiple choiceHardchapter-5-curatedpremiumcore-javaupcasting-and-dynamic-dispatch
java
abstract class Service { abstract void execute(); }
class Shipping extends Service { void execute() { System.out.println("Shipping executed"); } }
public class Main { public static void main(String[] args) { Service s = new Shipping(); s.execute(); } }
Choose one answer
Answer and explanation

Correct answer

D. The execute method in Shipping must be declared as public.

Why

In Java, when a method is overridden, it must at least have the same access level as the method in the superclass. If Service's execute was public, Shipping's execute must also be public, otherwise, it results in a compilation error.

Test yourself on Core Java

A free test with instant, explained results. No account needed.

Start free test
All Core Java questions →