Let me try to explae you.
Line 4 will call function on Line 2, and the Line 3 will be excuted as follows
OuterTest . this . id whcih can be looked as
OuterTest-->CurrentlyExceutingThread-->its id
So which makes it as
OuterTest.Outer.id which is STP
To get the default as output in the last line, you have to change the Line 1 to
static
String id ;
Ranchers
Correct me if i'm wrong.