程序改错题。以下代码存在错误,请修改后提交。
public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
animal.shout();
animal.run();
}
}
class Animal {
void shout() {
System.out.println("animal shout!");
}
}
class Dog extends Animal {
void shout() {
super.shout();
System.out.println("wangwang……");
}
void run() {
System.out.println("Dog is running");
}
}
输入格式:
输出格式:
输入样例:
无
输出样例:
animal shout!
wangwang……
Dog is running
解析
此题改法不唯一,问题出现在多态的产生条件。由于Dog类继承的animal 类,要想实现多态必须有方法重写,但是animal类里面没有run这个方法,Dog类里面的run属于新增方法,并非对父类方法的重写,故编译会报错,合理的解决办法是在Animal类里面增加run方法从而实现子类里面run的重写,进而实现多态
改完后提交的代码
/**
*
*/
public class Main {
public static void main(String[] args) {
Animal animal = new Dog();
animal.shout();
animal.run();
}
}
class Animal {
void shout() {
System.out.println("animal shout!");
}
void run (){
}
}
class Dog extends Animal {
void shout() {
super.shout();
System.out.println("wangwang……");
}
void run() {
System.out.println("Dog is running");
}
}
本文通过一个具体的程序改错案例,深入探讨了Java中多态的概念及其实现方式,强调了方法重写在多态中的关键作用。文章详细分析了原代码存在的问题,即Dog类中run方法并非Animal类方法的重写,导致多态无法正确实现。通过在Animal类中添加run方法,解决了这一问题,使Dog类能够正确地重写父类方法,实现了多态性。

532

被折叠的 条评论
为什么被折叠?



