当前位置:首页 > Java

java如何实现多态

2026-01-14 17:27:58Java

多态的概念

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

实现多态的三种方式

方法重写(Override)

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

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的依赖注入通过接口解耦具体实现)。

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

java如何实现多态

分享给朋友:

相关文章

vue如何实现重新实现主题

vue如何实现重新实现主题

动态主题切换的实现 在Vue中实现动态主题切换,通常需要结合CSS变量和状态管理。通过修改根元素的CSS变量值,可以全局改变应用的主题样式。 定义主题相关的CSS变量在根元素中: :root {…

vue如何实现分离

vue如何实现分离

Vue 实现组件分离的方法 Vue 可以通过多种方式实现组件分离,提升代码的可维护性和复用性。以下是几种常见的方法: 单文件组件 (SFC) Vue 的单文件组件(.vue 文件)将模板、脚本和样式…

vue如何实现id

vue如何实现id

在 Vue 中实现 ID 绑定 Vue 提供了多种方式为元素或组件绑定唯一的 ID,可以根据具体需求选择合适的方法。 方法一:使用 v-bind 绑定静态或动态 ID <template&g…

vue如何实现目录组件

vue如何实现目录组件

实现目录组件的基本思路 在Vue中实现目录组件通常需要结合页面内容的结构化数据(如标题层级),通过动态渲染生成可交互的目录。核心步骤包括提取标题、生成目录结构、实现滚动联动等。 提取标题信息 通过…

Vue如何实现多级域名

Vue如何实现多级域名

Vue 实现多级域名的方法 Vue 本身是一个前端框架,多级域名的实现通常需要结合后端配置和前端路由。以下是几种常见的方法: 使用路由动态匹配 在 Vue Router 中可以通过动态路由参数匹配…

vue手写签名如何实现

vue手写签名如何实现

实现 Vue 手写签名的步骤 使用 canvas 实现基础签名功能 在 Vue 项目中创建一个组件,利用 HTML5 的 canvas 元素实现手写签名功能。通过监听鼠标或触摸事件来捕获用户的绘制路径…