文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java面向对象之多态的原理是什么与怎么实现

2023-06-30 16:38

关注

本文小编为大家详细介绍“Java面向对象之多态的原理是什么与怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java面向对象之多态的原理是什么与怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

何为多态

定义:

多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。系统在运行时(而非编译时),能够根据其类型确定调用哪个重载的成员函数的能力,称为多态性。

特点:

(1)多态是面向对象的重要特性,简单点说:“一个接口,多种实现”,就是同一种事物表现出的多种形态。

(2)多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。

(3)对不同类的对象发出相同的消息将会有不同的行为。

(4)多态允许将子类的对象当作父类的对象使用,某父类型的引用指向其子类型的对象,调用的方法是该子类型的方法。这里引用和调用方法的代码编译前就已经决定了,而引用所指向的对象可以在运行期间动态绑定。

(5)多态分为编译时多态(函数参数个数不同或者参数类型不同)和运行时多态(虚函数和纯虚函数)。

作用:

(1)应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。//继承

(2)派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。

(3)隐藏实现细节,使得代码能够模块化(虚函数)。

代码实现

运算类:

public abstract class Operation {     private double _numberA;    private double _numberB;     public double get_numberA() {        return _numberA;    }     public void set_numberA(double _numberA) {        this._numberA = _numberA;    }     public double get_numberB() {        return _numberB;    }     public void set_numberB(double _numberB) {        this._numberB = _numberB;    }     public abstract double getResult();}

加法类:

public class OperationAdd extends Operation {    @Override    public double getResult() {        double result = 0;        result = super.get_numberA() + super.get_numberB();        return result;    }}

减法类:

public class OperationSub extends Operation {    @Override    public  double getResult() {        double result = 0;        result = super.get_numberA() - super.get_numberB();        return result;    }}

乘法类:

public class OperationMul extends Operation {    @Override    public double getResult() {        double result = 0;        result = super.get_numberA() * super.get_numberB();        return result;    }}

除法类:

public class OperationDiv extends Operation {    @Override    public double getResult() {        double result = 0;        if (super.get_numberB() == 0) {            System.out.println("除数不能为0");        } else {            result = super.get_numberA() / super.get_numberB();        }        return result;    }}

简单工厂类:

public class OperationFactory {    public static Operation createOperation(String operate) {        Operation operation = null;        switch (operate) {            case "+":                operation = new OperationAdd();                break;            case "-":                operation = new OperationSub();                break;            case "*":                operation = new OperationMul();                break;            case "/":                operation = new OperationDiv();                break;        }        return operation;    }}

客户端主方法类:

public class Main {    public static void main(String[] args) {        Operation operation;        operation=OperationFactory.createOperation("+");        operation.set_numberA(1);        operation.set_numberB(2);        System.out.println(operation.getResult());    }}

多态理解

我们都知道封装是为了让类的调用者不需要知道类的实现细节,而多态能让类的调用者连这个类的类型是什么都不必知道,只需要知道这个对象具有某个方法即可。

因此,多态可以理解成是封装的更进一步,让类调用者对类的使用成本进一步降低,提高程序的可扩充性、可维护性、可复用性。

读到这里,这篇“Java面向对象之多态的原理是什么与怎么实现”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯