java 如何实现多态
多态的概念
多态是面向对象编程的三大特性之一,允许不同类的对象对同一方法调用做出不同响应。Java 中多态主要通过继承和接口实现,分为编译时多态(方法重载)和运行时多态(方法重写)。
运行时多态(方法重写)
通过继承和重写父类方法实现,运行时根据对象实际类型调用对应方法。
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 myAnimal = new Dog(); // 父类引用指向子类对象
myAnimal.sound(); // 输出: Dog barks
}
}
编译时多态(方法重载)
同一类中多个同名方法根据参数列表区分,编译时确定调用哪个方法。
class Calculator {
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
Calculator calc = new Calculator();
System.out.println(calc.add(2, 3)); // 调用int版本
System.out.println(calc.add(2.5, 3.5)); // 调用double版本
}
}
接口实现多态
通过接口定义方法,由不同实现类提供具体行为。
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
}
}
关键要点
- 继承与重写:子类重写父类方法,通过父类引用调用时体现多态。
- 接口与实现:不同类实现同一接口,通过接口引用调用不同实现。
- 向上转型:父类/接口引用指向子类对象是多态的基础。
- 动态绑定:运行时根据对象类型确定方法调用,而非引用类型。
多态增强了代码的扩展性和灵活性,是设计模式(如策略模式、工厂模式)的基础。







