当前位置:首页 > Java

java如何多态

2026-03-20 08:16:18Java

多态的概念

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

java如何多态

实现多态的两种方式

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

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

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

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如何输出

输出到控制台 使用 System.out.println() 方法输出内容到控制台,适用于调试或简单信息展示。 示例代码: System.out.println("Hello, World!")…

java如何自学

java如何自学

确定学习目标和路径 自学Java需要明确目标,例如开发Web应用、Android应用或后端服务。根据目标选择学习重点,如Java基础、Spring框架或Android开发。制定阶段性计划,从基础语法到…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

java如何创建测试类

java如何创建测试类

创建测试类的基本步骤 在Java中创建测试类通常使用JUnit框架,以下是具体方法: 安装JUnit依赖 对于Maven项目,在pom.xml中添加依赖: <dependency>…

java实现vue接口

java实现vue接口

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

java 实现 php ord

java 实现 php ord

Java 实现 PHP 的 ord 函数 PHP 的 ord 函数用于获取字符串中第一个字符的 ASCII 值。在 Java 中,可以通过类型转换或直接使用字符的 Unicode 值实现类似功能。…