美文网首页
面向对象---多态

面向对象---多态

作者: 关先生的IT博客 | 来源:发表于2016-10-09 23:29 被阅读0次

    多态,是面向对象的程序设计语言最核心的特征。多态,意味着一个对象有着多重特征,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。从程序设计的角度而言,多态可以这样来实现(以java语言为例):


    {
    public void simpleCall();
    }
    public class Child_A implements Parent
    {
    public void simpleCall();
    {
    //具体的实现细节;
    }
    }
    public class Child_B implements Parent
    {
    public void simpleCall();
    {
    //具体的实现细节;
    }
    }```


    当然还可以有其他的实现
    然后,我们就可以看到多态所展示的特性了:
    Parent pa = new Child_A();
    pa.simpleCall()则显然是调用Child_A的方法;
    Parent pa = new Child_B();
    pa.simpleCall()则是在调用Child_B的方法。所以,我们对于抽象的父类或者接口给出了我们的具体实现后,pa 可以完全不用管实现的细节,只访问我们定义的方法,就可以了。事实上,这就是多态所起的作用,可以实现控制反转这在大量的J2EE轻量级框架中被用到,比如Spring的依赖注入机制。

    • 马士兵对多态的讲解
      在马士兵老师的例子里,我们看到,c为cat下的一个属性,所以它的数据指向是指向的new cat()括号中的子类属性的,而且animals这个父类的单个属性,注意,在之前的讲解中,如果c为animals的属性的话,一旦cat调用这个属性,指向new cat()只能获得到animals中的属性,而不指向cat中子类特有的属性.
      lady的属性中,有name和animals pet,在"11"中,将c的属性传递给pet.但是注意,这个时候c被当做animals,所以只能访问父类中所存在的属性.根据内存图,来说code segment中是存在方法的.例子中存在3个enjoy方法(都为animals中的引用重写),如果根据引用类型,那么调用的就应该是animals中的enjoy,但是注意在多态中这个时候调用的是实际中的enjoy方法(实际中的new的方法),动态绑定.面向对象中的核心

    多态存在的三个条件

    1. 继承关系
    2. 重写
    3. 父类指向子类对象.

    相关文章

      网友评论

          本文标题:面向对象---多态

          本文链接:https://www.haomeiwen.com/subject/iljmyttx.html