Vidyalelo
Java Programming · Q39

Inheritence

Programming · Java Programming · question 39

Q39

What will be printed after executing following program code? class Base int value = 0; Base() addValue(); void addValue() value += 10; int getValue() return value; class Derived extends Base Derived() addValue(); void addValue() value += 20; public class Test public static void main(String[] args) Base b = new Derived(); System.out.println(b.getValue());

A.
30
B.
10
C.
40
Answer
D.
20
E.
None of these

Answer: Option C

Solution

Answer: Option C
Solution:
When object of new derived is called, the flow goes to Derived() first, by default super(); is present in Derived() as the first statement, so the flow now goes to Base. Here value is initialised to 0 and then addValue() is called. The addValue has been overridden in Derived() hence The Base's addValue() will perform value+20(0+20) .After this control flows back to Derived()'s addValue() where again value+20 is done (20+20). Hence Answer is 40