面向对象编程理解误区:Java继承与多态混淆案例
在面向对象编程(OOP)中,Java的继承和多态是两个核心的概念,但有时会被混淆。以下是一个具体的案例:
案例背景:
假设我们有两个类——Animal
和 Dog
。
// Animal.java
public class Animal {
public void sound() {
System.out.println("Animal makes a sound");
}
}
// Dog.java
public class Dog extends Animal {
// Overriding the sound method from Animal
@Override
public void sound() {
System.out.println("Dog barks loudly");
}
}
误区:
这里可能存在一个误解,即认为Dog
继承了 Animal
的所有方法,包括重写的方法。
解决办法:
实际上,子类只能继承父类公开的非私有方法。所以Dog
不能直接访问并重写 Animal
中的 sound
方法。
要实现多态(Polymorphism),可以在方法调用时使用父类引用或接口:
// 示例:通过父类引用调用多态方法
public class Main {
public static void main(String[] args) {
Animal animal = new Dog(); // 创建Dog对象并赋给Animal类型变量
animal.sound(); // 调用sound方法,由于是Animal类型,所以调用的是Dog重写的方法
}
}
通过这种方式,我们实现了Dog
对 Animal
的多态扩展。
还没有评论,来说两句吧...