如果我们在不使用超类的引用变量的情况下调用子类的重写方法,那么它是运行时多态吗?
答案 0 :(得分:0)
是的,它会的。 Java对象根据运行时的值类型“决定”要调用的方法版本,而不是编译时变量的值。
考虑以下课程:
public class A {
public String foo() {
return "A";
}
}
public class B extends A {
public String foo() {
return "B";
}
}
foo()
的所有以下调用都将返回"B"
:
// compile-time type is A, runtime type is B
A a=new B();
a.foo();
// compile-time type is B, runtime type is B
B b=new B();
b.foo();
// compile-time type is B, runtime type is B
new B().foo();