当前位置:首页 > Java

java如何多态

2026-03-20 08:16:18Java

多态的概念

多态是面向对象编程的三大特性之一(封装、继承、多态),指同一个行为具有多种不同表现形式。在Java中,多态主要通过方法重写(Override)和接口实现来实现,允许子类对象以父类类型引用,调用时执行子类方法。

实现多态的两种方式

1. 方法重写(运行时多态)
子类继承父类并重写其方法,通过父类引用调用子类对象时,实际执行的是子类的方法。

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"
    }
}

2. 接口实现
通过接口定义方法,不同类实现接口时提供不同的实现逻辑。

java如何多态

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 a = new Dog())。

多态的应用场景

  • 代码扩展性:新增子类无需修改父类逻辑。
  • 统一接口调用:如集合框架中的 List list = new ArrayList()List list = new LinkedList()
  • 设计模式:工厂模式、策略模式等均依赖多态特性。

注意事项

  • 编译时类型与运行时类型:编译时检查父类方法是否存在,运行时调用子类方法。
  • 无法调用子类特有方法:需通过强制类型转换(如 ((Dog)myAnimal).fetch())。
  • 静态方法不支持多态:静态方法属于类,不参与重写。

标签: 多态java
分享给朋友:

相关文章

java如何输出数组

java如何输出数组

输出数组的方法 在Java中,输出数组内容有多种方式,具体取决于数组类型和输出格式需求。以下是几种常见的方法: 使用Arrays.toString()方法 适用于一维数组,直接调用Arrays.to…

java如何连接mysql数据库

java如何连接mysql数据库

连接 MySQL 数据库的步骤 添加 MySQL 驱动依赖 在项目中引入 MySQL 的 JDBC 驱动。如果使用 Maven,可以在 pom.xml 中添加以下依赖: <dependency…

java如何取绝对值

java如何取绝对值

取绝对值的方法 在Java中,取绝对值可以通过以下几种方式实现: 使用Math.abs()方法 Math.abs()是Java中最常用的取绝对值方法,适用于多种数据类型: int absolute…

如何学习好java

如何学习好java

掌握Java基础知识 学习Java的第一步是掌握其基础知识,包括数据类型、变量、运算符、控制流语句(如if-else、for循环、while循环)以及数组。这些是构建更复杂程序的基石。可以通过在线教程…

vue实现继承多态

vue实现继承多态

Vue 中实现继承和多态的方法 在 Vue 中实现继承和多态可以通过以下几种方式实现,主要依赖于 JavaScript 的原型继承和组合式 API 的特性。 使用 Mixins 实现继承 Mixin…

java实现vue接口

java实现vue接口

Java 实现 Vue 接口的方法 在 Java 中实现 Vue 前端调用的接口,通常需要使用 Spring Boot 框架构建 RESTful API。以下是具体的实现步骤和代码示例。 创建 Sp…