当前位置:首页 > Java

java如何实现多态

2026-01-14 17:27:58Java

多态的概念

多态是面向对象编程的三大特性之一(封装、继承、多态),指同一操作作用于不同对象时,可以产生不同的行为。Java中主要通过方法重写(Override)和接口/抽象类实现多态。

java如何实现多态

实现多态的三种方式

方法重写(Override)

子类继承父类并重写父类的方法,通过父类引用调用子类对象时,实际执行的是子类的方法。

java如何实现多态

class Animal {
    public void sound() {
        System.out.println("Animal makes sound");
    }
}

class Dog extends Animal {
    @Override
    public void sound() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // 父类引用指向子类对象
        myDog.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"
    }
}

抽象类

抽象类可以定义抽象方法,子类必须实现这些方法,从而实现多态。

abstract class Vehicle {
    abstract void run();
}

class Car extends Vehicle {
    @Override
    void run() {
        System.out.println("Car runs on road");
    }
}

class Boat extends Vehicle {
    @Override
    void run() {
        System.out.println("Boat sails on water");
    }
}

public class Main {
    public static void main(String[] args) {
        Vehicle vehicle1 = new Car();
        Vehicle vehicle2 = new Boat();
        vehicle1.run(); // 输出 "Car runs on road"
        vehicle2.run(); // 输出 "Boat sails on water"
    }
}

多态的核心条件

  1. 继承或实现关系:子类继承父类或实现接口。
  2. 方法重写:子类必须重写父类或接口的方法。
  3. 向上转型:父类引用指向子类对象(如 Animal myDog = new Dog())。

多态的应用场景

  • 方法参数或返回值类型为父类/接口,实际传入或返回子类对象。
  • 集合中存储同一父类的不同子类对象(如 List<Animal> 包含 DogCat)。
  • 框架设计(如Spring的依赖注入通过接口解耦具体实现)。

通过合理使用多态,可以提高代码的扩展性和可维护性。

分享给朋友:

相关文章

react如何实现keepalive

react如何实现keepalive

React 实现 KeepAlive 的方法 React 本身没有内置的 KeepAlive 组件,但可以通过以下方式模拟类似功能,实现组件状态保持或避免重复渲染。 使用 CSS 隐藏组件 通过 C…

vue如何实现刷新

vue如何实现刷新

实现页面刷新的方法 在Vue中实现刷新功能可以通过以下几种方式实现: 使用location.reload() 直接调用浏览器的原生方法强制刷新整个页面: methods: { refreshP…

vue如何实现分业

vue如何实现分业

Vue 实现分页的方法 在 Vue 中实现分页功能通常需要结合后端接口或前端数据处理。以下是几种常见的实现方式: 使用第三方分页组件 许多 UI 库提供了现成的分页组件,例如 Element UI…

vue 如何实现返回

vue 如何实现返回

Vue 实现返回功能的方法 使用 router.go(-1) 在 Vue 中可以通过 Vue Router 的 go 方法实现返回上一页的功能。在需要触发返回的按钮或方法中调用 this.$route…

vue如何实现配音

vue如何实现配音

Vue 实现配音的方法 在 Vue 中实现配音功能通常需要结合音频播放和动态内容展示。以下是几种常见的方法: 使用 HTML5 Audio API 通过 HTML5 的 Audio 对象可以加载并播…

vue如何实现弹窗

vue如何实现弹窗

Vue 实现弹窗的方法 使用组件化方式 创建一个独立的弹窗组件(如 Modal.vue),通过 v-if 或 v-show 控制显示隐藏。父组件通过 props 传递数据,通过 $emit 接收事件。…