Java中Animal b = new Dog();Dog c = new Dog();的区别
由于在编译阶段,只是检查参数的引用类型。然而在运行时,
java虚拟机(JVM)指定对象的类型并且运行该对象的方法。
因此在下面的例子中,
b.move()之所以能编译成功,是因为Animal类中存在move方法,所以编译成功,然而运行时,
运行的是特定对象的方法,
即运行的是Dog类的move方法。而对Dog c而言,编译阶段首先是去Dog中查找bark(),
因此能编译成功,同时也能运行成功;但是对于b.bark()而言,首先是去Animal类中寻找bark(),
因为找不到,因而编译错误。
public class JavaOverrideOverload {
public static class Animal {
public void move() {
System.out.println("动物可以移动");
}
}
public static class Dog extends Animal {
public void move() {
System.out.println("狗可以跑和走");
}
public void bark() {
System.out.println("狗可以吠叫");
}
}
public static void main(String args[]) {
Animal a = new Animal();
Animal b = new Dog();
Dog c = new Dog();
a.move();
b.move();
b.bark();
c.bark();
}
}
相关知识
【Java学习记录】十二 Java中的多态
Java小程序之 人(person)喂养猫(cat)和狗(dog)统称为动物(Animal),要求:运用抽象类、继承 提示:Animal为抽象类,Cat、Dog为..........
Java面向对象
Lucky Dog Animal Rescue位于哪里?
Object类、多态
草莓铃铛 宠物用品项圈 宠物铃铛 狗铃铛 狗项圈狗项 的翻译是:Strawberry bells bells pet collar pet dog bells dog collar dog 中文翻译英文意思,翻译英语
多态
java练习题
面试题 03.06. 动物收容所
java 多态
网址: Java中Animal b = new Dog();Dog c = new Dog();的区别 https://m.mcbbbk.com/newsview334831.html
上一篇: 猫的各种行为代表什么 |
下一篇: 【收藏】猫咪行为解读 |