Java面向对象编程中,继承与覆写冲突示例
在Java面向对象编程中,继承和覆写是两个重要的概念。当一个类继承另一个类并覆盖某个方法时,如果这两个行为同时存在,就可能出现冲突。
以下是一个简单的示例,展示了继承与覆写冲突:
// 父类
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
// 子类
class Dog extends Animal {
// 覆盖父类的方法
@Override
void sound() {
System.out.println("Dog barks loudly");
}
}
public class Main {
public static void main(String[] args) {
// 创建一个狗的实例
Dog myDog = new Dog();
// 调用覆写的方法
myDog.sound(); // 输出 "Dog barks loudly"
// 如果直接调用父类方法,会覆盖覆写的结果
Animal.animalSound(myDog); // 输出 "Dog barks loudly"
}
}
在这个例子中,子类Dog
覆盖了父类Animal
的方法sound()
。在main()
方法中,我们先创建了一个Dog
的实例,然后调用了这个覆写过的sound()
方法。
如果我们在一个地方直接调用Animal.sound(myDog)
,这会覆盖掉之前由子类覆写的sound()
方法,输出的就是覆写后的方法定义。这就是继承与覆写冲突的一个简单示例。
还没有评论,来说两句吧...