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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄冬 中级黑马   /  2015-5-13 23:27  /  322 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态
多态的概念:对象在不同时刻表现出来的不同状态
理解:针对引用类型的,在编译期间和运行期间的类型不一致,就是多态。
         创建对象,编译的时候只看左边,运行的时候才会new右边对象。
多态的前提:
1、要有继承关系(或实现关系)
2、要有方法重写
3、要有父类引用(或父接口)指向子类对象
多态有三种体现形式:类多态、抽象类多态、接口多态
多态中的成员特点:【重点】(方法有重写,而变量没有)
1、成员变量                编译看左边,运行看左边
2、成员方法      编译看左边,运行看右边(没被重写的方法,结果还是父类的)
注意:编译期间是要看父类的,如果子类有的方法父类没有,同样会报错。
多态的弊端和解决方案:
多态的弊端:父类的引用不能使用子类的特有功能。
  解决方案:向下转型  (多态的定义是向上转型)
  自我理解:定义的父类变量中装的是子类的对象,想让父类变量能够访问子类对象特有的成员变量和成员方式时(除继承的父类变量和方法外的),需要将父类变量向下转型为子类变量才行。
  比如:Fu f = new Zi();  Zi z = (Zi)f;
  多态转型中出现的问题:
   父类的变量中装的是类a的对象,结果要转换为类b的变量,肯定会报错的啦,报错为:java.lang.classcastexception(编译时不报错,运行时报错)
比如:Animal a = new Cat();  Dog d = (Dog)a; 会报错
多态的好处:
为了提高代码的扩展性和可维护性
引申:
继承的好处是提高代码的复用性;坏处是父类改动,子类全部改动,即强耦合性。
封装的好处是不能随意访问成员变量;坏处是访问操作略有复杂

1 个回复

倒序浏览
再来复习一下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马