java多态如何
多态的概念
多态是面向对象编程的三大特性之一,指同一操作作用于不同对象时产生不同的行为。Java中多态主要通过继承和接口实现,允许使用父类或接口类型引用子类对象,并在运行时动态绑定具体方法。
多态的实现方式
方法重写(Override)
子类继承父类后,可以重写父类的方法。当通过父类引用调用该方法时,实际执行的是子类重写后的版本。

class Animal {
void sound() { System.out.println("Animal sound"); }
}
class Dog extends Animal {
@Override
void sound() { System.out.println("Bark"); }
}
接口实现
通过接口定义方法签名,不同类实现同一接口时提供不同的实现逻辑。
interface Shape {
void draw();
}
class Circle implements Shape {
@Override
public void draw() { System.out.println("Drawing circle"); }
}
多态的应用场景
向上转型
父类引用指向子类对象,调用方法时执行子类重写的方法。

Animal myDog = new Dog();
myDog.sound(); // 输出 "Bark"
方法参数多态
方法参数定义为父类或接口类型,可接收任意子类或实现类对象。
void makeSound(Animal animal) {
animal.sound();
}
集合中的多态
通过集合存储不同类型的子类对象,统一处理。
List<Shape> shapes = new ArrayList<>();
shapes.add(new Circle());
shapes.add(new Square());
for (Shape shape : shapes) {
shape.draw();
}
多态的优势
- 代码扩展性:新增子类无需修改父类逻辑。
- 灵活性:运行时动态决定调用的方法。
- 解耦:降低模块间的依赖关系。
注意事项
- 编译时类型与运行时类型:编译时检查父类方法是否存在,运行时调用子类方法。
- 无法调用子类特有方法:需通过向下转型(强制类型转换)实现。
if (myDog instanceof Dog) { Dog dog = (Dog) myDog; dog.fetch(); // 调用子类特有方法 }






