在Java中,多态性是面向对象编程中的一个重要概念。它允许我们使用不同的对象来调用同一个方法,这对于代码重用来说具有重要的影响。

多态性的核心思想是通过父类引用指向子类对象,然后通过这个引用调用方法。这样做的好处是我们可以在不修改代码的情况下,通过改变引用的指向来实现代码的重用。

下面我们通过一个简单的例子来演示多态性对代码重用的影响:

```java class Animal { public void sound() { System.out.println("动物发出声音"); } } class Dog extends Animal { @Override public void sound() { System.out.println("狗发出汪汪声"); } } class Cat extends Animal { @Override public void sound() { System.out.println("猫发出喵喵声"); } } public class PolymorphismDemo { public static void main(String[] args) { Animal animal1 = new Dog(); Animal animal2 = new Cat(); animal1.sound(); animal2.sound(); } } ```

在上面的例子中,我们定义了一个Animal类和它的两个子类Dog和Cat。这三个类都有一个sound()方法,分别输出不同的声音。

在main()方法中,我们先创建了一个Animal类型的引用animal1,并将其指向一个Dog对象。然后,我们创建了一个Animal类型的引用animal2,并将其指向一个Cat对象。接着,我们通过这两个引用分别调用了sound()方法。

运行上面的代码,我们会看到以下输出:

``` 狗发出汪汪声 猫发出喵喵声 ```

这是因为animal1和animal2的指向不同的对象,虽然它们的类型都是Animal,但是它们调用sound()方法时却分别执行了Dog和Cat类中的sound()方法。这就是多态性的效果。

通过多态性,我们可以在不修改Animal类和其子类的前提下,通过改变引用的指向来调用不同的方法。这样,我们可以更灵活地使用已有的代码,实现代码的重用。

除了灵活性,多态性还带来了另一个重要的好处,那就是扩展性。当我们需要添加新的子类时,我们只需要继承Animal类并重写sound()方法即可,无需修改已有的代码。这样,我们的代码就具有了良好的可扩展性。

总结来说,Java的多态性对代码重用具有重要的影响。它允许我们通过改变引用的指向来调用不同的方法,从而实现代码的重用。多态性不仅提高了代码的灵活性,还提供了良好的扩展性。