How this program Behave, and How it Behave?

I didnt get the output of this program.

class xyz {

int i=20;

public void abc()

{

System.out.print("Hi how are u:->"+this.i);

}

}

public class InnerClassDemo extends xyz{

int i=10;

public static void main(String []args)

{

xyz x=new InnerClassDemo();

System.out.println("hi:->"+x.i);

x.abc();

}

public List getList()

{

return new ArrayList();

}

public void abc()

{

System.out.print("We are best:->"+this.i);

}

}

[572 byte] By [Jimmi_S_Prajapatia] at [2007-11-26 13:39:28]
# 1
So what's your question? Mike
bellyrippera at 2007-7-7 22:34:03 > top of Java-index,Java Essentials,Java Programming...
# 2
this program's output is hi:->20We are best:->10so i didnt get why this We are best:->10I thought , the output was like We are best:->20
Jimmi_S_Prajapatia at 2007-7-7 22:34:03 > top of Java-index,Java Essentials,Java Programming...
# 3
You inner class demo is no inner class demo; it's just two classes within the same source file. Both classes have a field "i" and an "abc()" method printing out the value of "i". The values are different and altered nowhere. Perfect result, I'd say.
quittea at 2007-7-7 22:34:03 > top of Java-index,Java Essentials,Java Programming...