• 技术文章 >Java >java教程

    java中的多态怎么理解

    (*-*)浩(*-*)浩2020-09-17 13:40:01原创53172

    php入门到就业线上直播课:进入学习

    多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。

    如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。

    方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。

    运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:

    java中的引用变量有两个类型:一个编译时类型,一个是运行时类型。编译时类型由声明该变量使用的类型决定,运行时类型由实际赋给
    该变量的对象决定。如果编译时类型与运行时类型不一致,就可能出现所谓的多态。——疯狂java讲义

    运行时多态的使用例子如下:

    public class PolyTest5
    {
        public void run(Car car)//这样利用公共的父类就屏蔽了子类之间的差异性,可以应对所有的车.
        {
            car.run();//只要子类继承了car都可以作为参数传入方法中.如果没有多态,就要有对应每个类的方法.非常的麻烦.
        }
    
        public static void main(String[] args)
        {
    
            PolyTest5 test = new PolyTest5();
    
            Car car = new BMW();
    
            test.run(car);
    
            QQ qq = new QQ();
    
            test.run(qq);//向上类型转换.
    
    
        }
    }
    
    class Car
    {
        public void run()
        {
            System.out.println("car is running");
        }
    }
    
    class BMW extends Car
    {
        public void run()
        {
            System.out.println("BMW is running");
        }
    }
    
    class QQ extends Car
    {
        public void run()
        {
            System.out.println("QQ is running");
        }
    }

    多态的三要素:1.继承 2.重写 3.父类引用指向子类对象。

    相关学习推荐:java基础教程

    以上就是java中的多态怎么理解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:java
    上一篇:java模板引擎是什么 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• java的hash值是什么• java2是什么• java异步是什么意思• java标识符是什么
    1/1

    PHP中文网