Core Java · interview question
Given the following code, which method will be executed at runtime? class Product { void display() { System.out.println("Product"); } } class Book extends Product { void display() { System.out.println("Book"); } } public class Main { public static void main(String[] args) { Product p = new Book(); p.display(); } }?
Multiple choiceMediumchapter-5-curatedpremiumcore-javaupcasting-and-dynamic-dispatch
class Product { void display() { System.out.println("Product"); } }
class Book extends Product { void display() { System.out.println("Book"); } }
public class Main { public static void main(String[] args) { Product p = new Book(); p.display(); } }Answer and explanation
Correct answer
D. "Book"
Why
The method executed is determined by the runtime type of the object. Since the object is instantiated as a Book, the Book's display method will be called, printing "Book".
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?