Java基础知识—多态

来源:互联网 发布:映客直播网站源码 编辑:程序博客网 时间:2024/06/06 13:56

前言
多态,是继数据抽象和继承之后,面向对象第三种基本类型特征。

  • 方法调用绑定

       将方法调用同一个方法主体关联起来,称为绑定。   方法绑定分为两种:前期绑定和后期绑定(动态绑定)
  • Java方法绑定机制

        Java中除了static方法和final方法(private方法属于final方法)之外,其他所有的方法都是通过后期绑定。
  • 多态表现

     假设有一个基类Shape,包含成员方法draw()和erase()方法,现在有三个导出类Cycle、Square、Triangle均继承自Shape,并有各自的draw()与erase()方法
    Shape s = new Cycle();    s.draw();
    上述两行简单的代码运行的结果却是:系统将调用Cycle中的draw方法,这就是Java对方法进行后期绑定的体现。
  • 向上转型
    向上转型意味着导出类的接口范围会缩小,但却不会小于其基类的全部接口。

  • 构造器和多态

    • 构造器调用顺序

          基类构造器总是在导出类构造过程中被调用,而且按照继承层次逐渐向上链接,保证每个基类的构造器都能够得到调用。而构造器也有一项特殊任务:**检查对象是否被正确构造。**    由于导出类只能访问自己的成员而不能访问基类中的成员(基类成员通常都为私有类型),只有基类的构造器才具有恰当的权限对自己的元素进行初始化。因此必须令所有的构造器得到调用,否则就不能正确构造完整对象。

      构造器调用顺序:
      1 调用基类构造器。并不断递归下去,首先构造这种层次结构的跟,然后是下一层导出类,直到最低层的导出类。
      2 按照声明顺序调用成员的初始化方法。
      3 调用导出类构造器的主体。

  • 向下转型与运行时类型识别(RTTI)

    • 向下转型、

           向上转型时,会丢失具体的类型信息,而且是安全的。但当我们需要获取类型信息时,就可以利用向下转型。但向下转型时不安全的。     向下转型,即将基类转换为导出类,由于导出类的接口比基类更为广泛,如果不对向下转型进行检查,将会发生错误(尤其是在调用向下转型获得的对象中的成员方法时)。在程序进入运行时期,仍然会对向下转型的对象进行检查,并根据实际情况决定是否返回一个ClassCastException(类转型异常)。
  • RTTI

    • 这种在运行期间对类型进行检查的行为称作“运行时类型识别(RTTI)”
0 0
原创粉丝点击