Java面向对象之多态
2019-05-22 06:34:18来源:博客园 阅读 ()
面向对象之多态的个人理解:
以前学习的定义一个变量都是指向本类的,如 本类数据类型 变量名= new 本来数据类型();而多态是父类类型 变量名=new 子类类型 ();也就是给父类类型定义一个子类类型的值,这样就既能调用子类的方法,又能调用父类的方法了。当然前提是二者存在继承或者实现关系;但是当子父类中出现成员变量和成员方法相同的现象时,对于成员变量:编译和运行都看左边(父类),而对于成员方法,则编译看左边(父类),运行看右边(子类),也就是说当出现一样的时候父类中都必须存在。
有关多态的转型,可以理解为当需要调用父类的功能时,使用向上转型(多态就是其中一种),当需要调用子类的特有功能时,则用到向下转型;但是由于父类型被继承的不一定就只有一个子类型,为了确定来自哪个子类型,就需要确定用instanceof 来确定具体来自哪个!需要注意的是向下转型需要在向上转型也就是多态的基础上才可以的。
多态:
一、概念:
多态体现为父类引用变量可以指向子类对象。
多态的前提是必须有子父类关系或者类实现接口关系,否则无法完成多态。
在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。
二、定义:
父类类型 变量名 = new 子类类型(); 变量名.方法名();
三、多态的成员特点:
成员变量:编译运行都看左边(父类);
成员方法:编译看左,运行看右(子类)。
四、instanceof 关键字
用instanceof关键字来判断某个对象是否属于某种数据类型(若是根本没关系的话,直接编译失败;编译成功可能为父元素的另外一个子元素)
五、多态-转型:
1、向上转型:
当有子类对象赋值给一个父类引用时,便是向上转型。-------多态本身就是向上转型的过程
父类类型 变量名 = new 子类类型();
2、向下转型:
一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用转为子类引用,这个过程是向下转型。
在多态的基础上才可以的,也就是得先向上再向下的!
向下转型后调用对象和方法时,都是调用的子类的方法;也可以调用子类独有的普通方法。
子类类型 变量名 = (子类类型) 父类类型的变量;
六、多态的优劣:
1、什么时候用向上转型:
当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作,这时就可以使用向上转型。
2、什么时候用向下转型:
当要使用子类特有功能时,就需要使用向下转型。
向下转型的好处:可以使用子类特有功能。
弊端是:需要面对具体的子类对象;在向下转型时容易发生ClassCastException类型转换异常。在转换之前必须做类型判断。(有可能转到另外的一个子元素上,这时候就需要instanceof 判定下是不是所需要的数据类型)
原文链接:https://www.cnblogs.com/21-forever/p/10893317.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash