建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 网站开发 > Java教程 >

java中的多态怎么理解

时间:2019-08-13 14:42来源:PHP中文网 作者:猪哥 点击:
Java中多态是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。例如:键盘上的快捷键在不同的工具上有不同的效果,同一个事件发生在不同的对象上会产生不同的结果。
多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。

如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当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.父类引用指向子类对象。

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片