在Java中实现多态主要有以下几种方式:
继承和方法重写
子类继承父类,并重写父类的方法。
调用方法时,根据对象的实际类型动态决定调用哪个方法。
接口实现
类可以实现一个或多个接口,接口定义了一组方法,类提供这些方法的具体实现。
实现了相同接口的对象可以被视为同一类型的对象,即使它们属于不同的类。
抽象类
抽象类可以包含抽象方法,子类必须实现这些抽象方法。
抽象类也可以包含具体方法,子类可以选择性地重写这些方法。
多态的好处包括代码的复用、扩展性和维护性。通过多态,可以在不修改原有代码的情况下,增加新的子类来实现新的功能,从而提高代码的灵活性。
下面是一个简单的Java多态示例,使用继承和方法重写:
```java
// 父类
class Animal {
public void sound() {
System.out.println("Animal makes sound");
}
}
// 子类1
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks");
}
}
// 子类2
class Cat extends Animal {
@Override
public void sound() {
System.out.println("Cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.sound(); // 输出 "Dog barks"
animal2.sound(); // 输出 "Cat meows"
}
}
```
在这个例子中,`Animal` 是父类,`Dog` 和 `Cat` 是子类。子类重写了父类的 `sound` 方法,以展示不同的行为。在 `main` 方法中,使用父类类型的引用 `Animal` 来指向子类的对象,并调用 `sound` 方法,实现了多态。