java如何实现多态
多态的概念
多态是面向对象编程的三大特性之一,指同一操作作用于不同对象时,可以产生不同的行为。Java中多态主要通过继承和接口实现,分为编译时多态(方法重载)和运行时多态(方法重写)。
实现多态的三种方式
方法重载(编译时多态)
在同一个类中,多个方法名称相同但参数列表不同(参数类型、数量或顺序不同)。编译器根据调用时的参数决定具体执行哪个方法。
class Calculator {
int add(int a, int b) { return a + b; }
double add(double a, double b) { return a + b; }
}
方法重写(运行时多态)
子类继承父类并重写其方法,通过父类引用指向子类对象,调用方法时实际执行子类的方法。
class Animal {
void sound() { System.out.println("Animal sound"); }
}
class Dog extends Animal {
@Override
void sound() { System.out.println("Bark"); }
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // 父类引用指向子类对象
myDog.sound(); // 输出 "Bark"(运行时绑定)
}
}
接口实现
通过接口定义方法,由不同类实现接口并提供具体实现。调用时通过接口引用指向实现类对象。
interface Shape {
void draw();
}
class Circle implements Shape {
@Override
public void draw() { System.out.println("Drawing Circle"); }
}
class Square implements Shape {
@Override
public void draw() { System.out.println("Drawing Square"); }
}
public class Main {
public static void main(String[] args) {
Shape shape1 = new Circle();
Shape shape2 = new Square();
shape1.draw(); // 输出 "Drawing Circle"
shape2.draw(); // 输出 "Drawing Square"
}
}
多态的关键条件
- 继承或实现关系:子类继承父类或实现接口。
- 方法重写:子类需重写父类或接口的方法。
- 向上转型:父类/接口引用指向子类对象(如
Animal myDog = new Dog())。
多态的应用场景
- 扩展性:新增子类无需修改原有代码,只需重写方法。
- 代码复用:通过父类引用统一处理不同子类对象。
- 解耦:调用方依赖抽象(父类/接口),而非具体实现。
通过合理使用多态,可以显著提升代码的灵活性和可维护性。







