如何实现java多态
多态的基本概念
多态是面向对象编程的三大特性之一(封装、继承、多态),指同一操作作用于不同对象时表现出不同的行为。Java中多态主要通过方法重写(Override)和接口/抽象类实现。
实现多态的条件
- 继承或接口实现:存在父子类继承关系或类实现接口。
- 方法重写:子类需重写父类或接口中的方法。
- 向上转型:父类引用指向子类对象(如
Animal a = new Dog())。
通过继承实现多态
class Animal {
void sound() {
System.out.println("Animal makes sound");
}
}
class Dog extends Animal {
@Override
void sound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal a = new Dog(); // 向上转型
a.sound(); // 输出 "Dog barks"
}
}
通过接口实现多态
interface Shape {
void draw();
}
class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
public class Main {
public static void main(String[] args) {
Shape s = new Circle(); // 接口引用指向实现类
s.draw(); // 输出 "Drawing a circle"
}
}
多态的应用场景
- 方法参数多态:方法参数使用父类或接口类型,可接受任意子类对象。
- 集合框架:如
List<String> list = new ArrayList<>()。 - 设计模式:如策略模式、工厂模式等。
注意事项
- 编译时类型与运行时类型:编译时检查父类方法是否存在,运行时调用子类重写方法。
- 无法调用子类特有方法:需通过强制向下转型(如
((Dog)a).fetch())。 instanceof检查:向下转型前建议用instanceof避免ClassCastException。
通过合理使用多态,可以增强代码的扩展性和可维护性。






