java如何实现多态性
多态性的概念
多态性是面向对象编程的三大特性之一,指同一操作作用于不同对象时产生不同的行为。Java中主要通过方法重写(Override)和接口实现来实现多态性。
实现多态性的方式
方法重写(Override)
子类继承父类并重写父类的方法,通过父类引用指向子类对象,调用方法时实际执行子类的方法。
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())。 - 动态绑定:运行时根据对象类型决定调用哪个方法。
- 抽象类和接口:抽象类可以定义未实现的方法,接口强制实现多态行为。
注意事项
- 多态性仅适用于方法,不适用于成员变量(变量调用取决于引用类型)。
- 静态方法(
static)和私有方法(private)不能通过多态性重写。 - 使用
@Override注解确保方法重写的正确性。







