子类覆盖了父类的方法,为什么还能够调用父类的该方法
package wancy;public class Strange
{
int a=2;
static int b=3;
void f()
{
System.out.println("F");
}
public static void main(String[]args)
{
Str str=new Str();
System.out.println(str.a);
Strange s=str;
System.out.println(s.a);
str.f();
s.f();
}
}
class Str extends Strange
{
void f()
{
System.out.println("Z");
}
Str()
{
a=21;b=33;
System.out.println(this.a);
System.out.println(this.b);
System.out.println(super.a);
System.out.println(super.b);
this.f();
super.f();
}
}
结果:21
33
21
33
Z
F
21
21
Z
Z
结果为什么不是21 33 21 33 Z Z 21 21 Z Z,既然父类f()方法被覆盖了,为什么不创建父类对象的情况下还能通过super.f()调用父类的f()方法?