当超类引用指向子类对象时,执行期间是否将jvm类型转换为从sub到super类型的obejct并将其存储在引用变量中?
class Animal {
void bark() {
System.out.println("Animal is barking");
}
}
class Dog extends Animal{
void bark() {
System.out.println("Dog is barking");
}
}
public class DynamicBinding {
public static void main(String[] args) {
Animal a = new Dog(); //does implicit type casting happens at this line?
a.bark();
}
}
答案 0 :(得分:0)
不,你在这里没有使用Dog的界面,你正在使用Animal的界面。这意味着,例如,如果Dog类有另一种方法,比如" run"动物类没有它,它不会在这里使用。
我想说的是:根本没有隐式或显式类型转换
答案 1 :(得分:0)
这是多态性的上传。这条线在下面说:
Animal a = new Dog();
您使用超类接口,但实现在子类中。也就是说,您可以在a
引用上使用Animal类中的方法,但该方法的实现在Dog类中。