📜  Java中的多态性(1)

📅  最后修改于: 2023-12-03 15:16:32.110000             🧑  作者: Mango

Java中的多态性

在 Java 中,多态性(polymorphism)是面向对象编程的一种基本特性。它允许我们将不同类型的对象作为同一类型来看待和操作。

多态性的实现方式

Java 中的多态性主要有两种实现方式:

  1. 方法重载(overloading)
  2. 方法覆盖(overriding)
方法重载

方法重载指在一个类中定义多个同名但参数列表不同的方法。当我们调用这些同名的方法时,编译器会根据参数列表的不同选择合适的方法进行调用。这种多态性也被称为编译时多态性(静态多态性)。

public class Overloading {
  public void print() {
    System.out.println("This is the print method without parameters.");
  }

  public void print(String str) {
    System.out.println("This is the print method with a parameter: " + str);
  }
}
方法覆盖

方法覆盖指在一个子类中重新定义父类中已有的方法。当我们调用这个方法时,虽然它在不同的对象中具有不同的实现,但是我们都可以将这些不同类型的对象当做它们的共同父类来看待和操作。这种多态性也被称为运行时多态性(动态多态性)。

public class Animal {
  public void makeSound() {
    System.out.println("This is the makeSound method of the Animal class.");
  }
}

public class Cat extends Animal {
  @Override
  public void makeSound() {
    System.out.println("Meow!");
  }
}

public class Dog extends Animal {
  @Override
  public void makeSound() {
    System.out.println("Woof!");
  }
}
多态性的优点

Java 中的多态性使得我们能够更加灵活地编写代码。它允许我们将不同类型的对象作为同一类型来看待和操作,从而大大简化了代码的编写和维护。此外,多态性还提高了代码的可扩展性和可重用性,使得我们可以更加方便地扩展和修改已有的代码。

多态性的限制

虽然多态性很有用,但是它也有一些限制。其中最重要的一点是,多态性只适用于方法,而不适用于属性。也就是说,尽管我们在程序中可以将不同类型的对象当做同一类型来看待和操作,但是它们的属性并不是相同的。因此,如果我们要访问一个对象的属性,就必须将它强制转换为正确的类型。