0

I am going through my notes(after 5-6 months) and I am unable to understand the output given by following code :

class Base
{
    int x=20;
}

class Child extends Base 
{
    int x=50;

    public static void main(String arg[])
    {
       Base b = new Child();     //upcasting
       System.out.println(b.x);    // prints 20
    }
}

I expected the output to be 50 but the output is 20. I don't understand reason behind this output.

I know int x = 20 in Base is same as Child class's int x = 50 resulting in data hiding . Also reference id of Child class is in Base class reference variable b resulting in upcasting .

Both of these should result in 50 as output , since b is having refernce id of the child class so b.x should be 50 and also because by data hiding int x= 50 hides int x = 20 .

So, why output is 50.

praggi
  • 7
  • 4

0 Answers0