黑马程序员技术交流社区

标题: 多态 [打印本页]

作者: 暮色醉玄阳    时间: 2014-10-27 14:07
标题: 多态
1.定义:是指一个对象可以有多种形态,换句话说多态使我们可以把一个子类对象看作是一个父类对象类型
       (例:father A = new child() )。
       多态指的是编译时的类型变化,而运行时类型不变。
    2.多态分为两种:编译时多态和运行时多态。
       编译时类型:定义时类型(主观概念)把它看作什么。
       运行时类型:真实类型(客观概念) 实际上他是什么。
       重载是编译时多态,覆盖是运行时多态。在方法重载的情况下,参数类型决定于编译时类型。
    3.作用:在需要一类对象的共性时,可以很容易的抽取。并且可以屏蔽不同子类对象之间所不关心的差异。
       多态方便写出更通用的代码,以适应需求的不断变化
    4.多态常见的用法:
       (1)、多态用在方法的参数上
       (2)、多态用在方法的返回类型上
    5.运行时多态的三原则:
       (1)、对象不变(改变的是主观认识)
       (2)、对于对象的调用只能限于编译时类型的方法。
       (3)、在程序的运行时,动态类型判定。运行时调用运行时类型,即他调用覆盖后的方法。
    注意:多态时,只有一般方法是动态调用的;而 static 方法和 final 方法依然是静态调用的;属性全是静态调用的。
     如:father A = new child(); 则A的一般方法是child的方法;但A的属性是father的属性。
    同样:child C = new child(); 则 (father)C 的一般方法还是child的方法,但属性是father的属性。

if(cat instanceof Animal){ ... }  //如果cat属于Animal类型则执行
强制类型转换,在迫不得已的时候再用。因为很容易出错。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2