public class poly{
public static void main(
String a[]){
A ref1=new c();
B ref2=(B)ref1;
System.out.println(ref2.g());
}
}
class A{
private int f(){ return 0;}
public int g(){ return 3;}
}
class B extends A{
public int f(){ return 1;}
public int g(){ return f();}
}
class c extends B{
public int f(){ return 2;}
}
this program prints 2 but if i change the access modifier of f() in class B
to private it prints 1....whereas for anyother it prints 2...how is it being interpreted by compiler