A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 暮色醉玄阳 中级黑马   /  2014-10-27 14:07  /  683 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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类型则执行
强制类型转换,在迫不得已的时候再用。因为很容易出错。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马