当前位置:首页 > Java

java 如何实现多态

2026-03-03 05:19:02Java

多态的概念

多态是面向对象编程的三大特性之一,允许不同类的对象对同一方法调用做出不同响应。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
    }
}

编译时多态(方法重载)

同一类中多个同名方法根据参数列表区分,编译时确定调用哪个方法。

class Calculator {
    int add(int a, int b) {
        return a + b;
    }

    double add(double a, double b) {
        return a + b;
    }
}

public class Main {
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        System.out.println(calc.add(2, 3));      // 调用int版本
        System.out.println(calc.add(2.5, 3.5));  // 调用double版本
    }
}

接口实现多态

通过接口定义方法,由不同实现类提供具体行为。

interface Shape {
    void draw();
}

class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing Circle");
    }
}

class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing Square");
    }
}

public class Main {
    public static void main(String[] args) {
        Shape shape1 = new Circle();
        Shape shape2 = new Square();
        shape1.draw(); // 输出: Drawing Circle
        shape2.draw(); // 输出: Drawing Square
    }
}

关键要点

  • 继承与重写:子类重写父类方法,通过父类引用调用时体现多态。
  • 接口与实现:不同类实现同一接口,通过接口引用调用不同实现。
  • 向上转型:父类/接口引用指向子类对象是多态的基础。
  • 动态绑定:运行时根据对象类型确定方法调用,而非引用类型。

多态增强了代码的扩展性和灵活性,是设计模式(如策略模式、工厂模式)的基础。

java 如何实现多态

分享给朋友:

相关文章

vue如何实现放大缩小

vue如何实现放大缩小

Vue 实现放大缩小功能 在 Vue 中实现放大缩小功能可以通过多种方式实现,以下介绍几种常见的方法: 使用 CSS transform 缩放 通过绑定 CSS 的 transform: scale…

vue手写签名如何实现

vue手写签名如何实现

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

php如何实现静态化

php如何实现静态化

PHP 实现静态化的方法 使用 ob_start() 和 ob_get_contents() 利用 PHP 的输出缓冲功能捕获动态生成的页面内容,将其保存为静态文件。这种方法适用于内容不频繁变化的页面…

js双击事件如何实现

js双击事件如何实现

实现双击事件的方法 在JavaScript中,可以通过监听dblclick事件或手动检测两次点击的时间间隔来实现双击事件。以下是几种常见的方法: 使用原生dblclick事件 element.a…

如何实现翻页式h5

如何实现翻页式h5

翻页式H5的实现方法 翻页式H5通常指通过滑动或点击切换页面的交互形式,常用于营销活动、产品展示等场景。以下是几种常见的实现方式: 使用HTML5和CSS3实现基础翻页 通过CSS3的transfo…

vue如何实现分离

vue如何实现分离

Vue 实现代码分离的方法 Vue 提供了多种方式实现代码分离,提升项目的可维护性和模块化程度。以下是常见的几种方法: 组件化开发 将功能拆分为独立的 Vue 组件,每个组件包含自己的模板、逻辑和样…