Skip to content
Sharp

Core Java · interview question

Why does the following code throw a ClassCastException at runtime? class Payment {} class CreditCardPayment extends Payment {} class CashPayment extends Payment {} public class Main { public static void main(String[] args) { Payment p = new CreditCardPayment(); CashPayment cp = (CashPayment) p; } }?

Multiple choiceHardchapter-5-curatedpremiumcore-javaupcasting-and-dynamic-dispatch
java
class Payment {}
class CreditCardPayment extends Payment {}
class CashPayment extends Payment {}
public class Main { public static void main(String[] args) { Payment p = new CreditCardPayment(); CashPayment cp = (CashPayment) p; } }
Choose one answer
Answer and explanation

Correct answer

B. A CreditCardPayment object cannot be cast to a CashPayment object.

Why

A ClassCastException occurs because a CreditCardPayment object cannot be cast to a CashPayment object, as they are not in the same inheritance hierarchy directly. The runtime type of the object must be compatible with the cast type.

Test yourself on Core Java

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

Start free test
All Core Java questions →