首页 > 分享 > Java中Animal b = new Dog();Dog c = new Dog();的区别

Java中Animal b = new Dog();Dog c = new Dog();的区别

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

所属分类:萌宠日常
上一篇: 猫的各种行为代表什么
下一篇: 【收藏】猫咪行为解读