Java面向对象之多态

2019-05-22 06:34:18来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

面向对象之多态的个人理解:

  以前学习的定义一个变量都是指向本类的,如 本类数据类型 变量名= 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
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:操作集合的工具类Collections

下一篇:OO第三单元总结--根据JML写代码