首页 > Java > java教程 > 正文

Java 中接口和抽象类的多态性应用

PHPz
发布: 2024-05-02 10:33:01
原创
1218人浏览过

在java中,通过接口和抽象类来实现多态性。接口定义了必须由实现它的类实现的方法;抽象类包含抽象方法,必须由其子类实现。通过创建对象数组并调用相同方法,可以根据元素的实际类型调用不同的实现,从而实现多态性。例如,可以定义一个 shape 接口来定义 shape 类的绘制方法,然后创建具有不同实现的多个形状类(如 circle、square、triangle),并通过一个画布类使用多态性来绘制所有形状。

Java 中接口和抽象类的多态性应用

Java 中接口和抽象类的多态性应用

多态性是面向对象编程 (OOP) 中的关键概念,它允许对象以不同的方式响应相同的方法调用。在 Java 中,可以通过接口和抽象类来实现多态性。

接口

立即学习Java免费学习笔记(深入)”;

接口定义了必须由实现它的类实现的一组方法。接口本身不包含任何实现,只是指定了合同。

public interface Shape {
    double getArea();
}
登录后复制

抽象类

抽象类是具有至少一个抽象方法的类。抽象方法没有实现,必须由其子类实现。抽象类可以包含具体方法和字段。

AppMall应用商店
AppMall应用商店

AI应用商店,提供即时交付、按需付费的人工智能应用服务

AppMall应用商店 56
查看详情 AppMall应用商店
public abstract class Animal {
    protected String name;
    
    public abstract void makeSound();
}
登录后复制

多态性

使用接口和抽象类,可以创建对象数组,其中每个元素都具有不同的类型。当调用这些元素上的相同方法时,会根据实际元素的类型调用不同的实现。

Shape[] shapes = { new Circle(), new Square(), new Triangle() };
for (Shape shape : shapes) {
    System.out.println("Area: " + shape.getArea());
}
登录后复制

实战案例

考虑一个可以绘制不同形状的画布类。可以使用以下接口定义形状:

public interface Shape {
    void draw();
}
登录后复制

然后,可以创建具有不同绘制实现的多个形状类:

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

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

public class Triangle implements Shape {
    @Override
    public void draw() { System.out.println("Drawing a triangle"); }
}
登录后复制

画布类可以接受 Shape 对象数组,使用多态性来绘制所有形状:

public class Canvas {
    public void drawAll(Shape[] shapes) {
        for (Shape shape : shapes) {
            shape.draw();
        }
    }
}
登录后复制

通过接口和抽象类,Java 中的多态性允许根据对象的实际类型动态调用方法,从而实现了可扩展和可重用的代码。

以上就是Java 中接口和抽象类的多态性应用的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号