interface I
{
int i = 1, ii = Test.out("ii", 2);
}
interface J extends I
{
int j = Test.out("j", 3), jj = Test.out("jj", 4);
}
interface K extends J
{
int k = Test.out("k", 5);
}
class
Test {
public static void main(
String[] args) { System.out.println(K.j); }
public static int out(String s, int i)
{
System.out.println(s + "=" + i);
return i;
}
}
It will print j = 3, jj=4 and then 3.
Could someone explain to me in laymen's terms the reason for the output in the above code. I'm really confused over the difference between compile-time constants and initializations with respect to the above code.