面向对象编程理解误区:Java继承与多态混淆案例

原创 一时失言乱红尘 2024-12-09 01:45 157阅读 0赞

在面向对象编程(OOP)中,Java的继承和多态是两个核心的概念,但有时会被混淆。以下是一个具体的案例:

案例背景:
假设我们有两个类——AnimalDog

  1. // Animal.java
  2. public class Animal {
  3. public void sound() {
  4. System.out.println("Animal makes a sound");
  5. }
  6. }
  7. // Dog.java
  8. public class Dog extends Animal {
  9. // Overriding the sound method from Animal
  10. @Override
  11. public void sound() {
  12. System.out.println("Dog barks loudly");
  13. }
  14. }

误区:
这里可能存在一个误解,即认为Dog 继承了 Animal 的所有方法,包括重写的方法。

解决办法:
实际上,子类只能继承父类公开的非私有方法。所以Dog 不能直接访问并重写 Animal 中的 sound 方法。

要实现多态(Polymorphism),可以在方法调用时使用父类引用或接口:

  1. // 示例:通过父类引用调用多态方法
  2. public class Main {
  3. public static void main(String[] args) {
  4. Animal animal = new Dog(); // 创建Dog对象并赋给Animal类型变量
  5. animal.sound(); // 调用sound方法,由于是Animal类型,所以调用的是Dog重写的方法
  6. }
  7. }

通过这种方式,我们实现了DogAnimal 的多态扩展。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,157人围观)

还没有评论,来说两句吧...

相关阅读