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
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(); } }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.
More Core Java questions
- What happens if a class implements two interfaces that have methods with the same signature?
- Given the code snippet below, what will be the result of the comparison using '=='?
- Which of the following variable names is best for storing the total amount in a shopping cart?
- When does a local variable declared inside a method stop existing?
- Which of the following is a checked exception?
- Why might you choose 'int' over 'long' for storing the number of items in a small store's inventory?