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
}
}
通过接口实现多态
定义接口并由不同类实现,通过接口引用调用实现类的方法。
interface Shape {
void draw();
}
class Circle implements Shape {
@Override
public void draw() {
System.out.println("Drawing a circle");
}
}
class Square implements Shape {
@Override
public void draw() {
System.out.println("Drawing a square");
}
}
public class Main {
public static void main(String[] args) {
Shape shape1 = new Circle();
Shape shape2 = new Square();
shape1.draw(); // 输出: Drawing a circle
shape2.draw(); // 输出: Drawing a square
}
}
多态的必要条件
- 继承或实现关系:子类继承父类或实现接口。
- 方法重写:子类需重写父类或接口中的方法。
- 向上转型:父类/接口引用指向子类对象(如
Animal myAnimal = new Dog())。
多态的应用场景
- 方法参数多态:传递不同子类对象给同一方法。
- 集合多态:使用父类类型存储不同子类对象(如
List<Animal>)。 - 工厂模式:通过多态返回不同的实现类实例。
注意事项
- 多态仅适用于方法,不适用于属性(属性无重写概念)。
- 若需调用子类特有方法,需向下转型(如
((Dog)myAnimal).fetch())。 - 使用
instanceof检查类型以避免转型异常。
通过合理使用多态,可以增强代码的扩展性和可维护性。






