请各位大神解释下一段代码
public class two extends A{
int fun2() {
return 456;
}
public static void main(String[] args) {
two b = new two();
b.fun1();
A a = b;
a.fun1();
}
}
class A {
void fun1() {
System.out.println(fun2());
}
int fun2() {
return 123;
}
}