码迷,mamicode.com
首页 > 编程语言 > 详细

JavaOO 多态和抽象

时间:2017-02-16 01:29:06      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:abs   rac   访问修饰符   向下转型   类类型   instance   动态绑定   运行   实现   

多态:相同的行为,不同的实现(重写、重载)

多态:

1、静态多态:编译时,系统就能确定调用的是哪个方法---使用重载实现

2、动态多态:运行中系统才能动态确定方法所指的对象---使用动态绑定和重写实现

动态多态的技术基础:

引用数据类型转换的前提:不是任意引用数据类型都可以进行转换(没办法“指鹿为马”),只有有继 

                                        承关系的类才能转换。

1、向上转型技术---自动转换类型---把小类型的对象放到大类型的引用中---没有任何风险,绝对成功

                   ---子类对象中由于包含了一个完整的父类对象部分,所以父类引用可以指向子类对象

      ---对于同一个子类对象,用父类引用指向只能看到它身上来自于父类的方法,换成子                             

          类引用指向的时候可以看到所有的方法(都要受访问修饰符限制)

      在Java中除了本类的引用指向本类的对象是绝对正确且没有特殊操作以外,父类的引用指向子类对 

      象也是绝对正确

Object的引用可以指向所有类型的独享,它是所有类的根类

2、向下转型技术---强制转换类型---把大类型指向的对象放到小类型的引用中---有风险,风险是编译

                                                         通过,可能运行报异常

由于父类引用现在不仅仅能够指向父类对象,也可以指向各种子类对象;所以父类引用的变化性增大。当我们把它赋给一个子类引用时,必须强制告知这就是该子类的对象,才能编译通过。但是运行起来后,如果该父类引用指的不是该子类对象,还是会运行失败,报异常。只有该父类引用确实指向该子类对象,才会运行也成功。

当父类引用指向子类对象时,只能看到来自父类的属性和行为

当调用重写方法时,一定得到的是子类重写后的效果,因为对象时子类对象

instanceof关键字:在强转之前做判断,规避掉强转之后的运行异常

instanceof是一个运算符

抽象:

当一个方法只有方法的申明,没有方法的实现,这样的方法就是抽象方法

抽象方法用abstract关键字修饰

当一个类具备一个抽象方法,这个类就不能够再被new 对象了,这个类就叫抽象类,需要用关键字abstract修饰。

特点:

1、抽象类不能产生对象---1)在做类的继承设计时,当父类抽取到一定程度,就没有产生对象的必要

     了,因为所有有意义的对象,一定是属于某个子类类型的

2)如果一个类有抽象方法,那么这个类就一定是抽象类。因为具体实际存

     在的对象不可能有抽象的内容。

3)语法上:抽象类可以没有抽象方法,只要在类声明的地方加了abstract;

   有抽象方法的类,一定是抽象类

2、抽象类的作用:专门用来设计为父类的---子类必须重写来自于抽象类的抽象方法,从而达到了子类

       的实现必须遵循设计人员的一支

  ---如果子类不重写抽象方法,那么该子类也只能是抽象类

3、抽象类也是类,所以能够再其中书写属性、构造、方法

 

JavaOO 多态和抽象

标签:abs   rac   访问修饰符   向下转型   类类型   instance   动态绑定   运行   实现   

原文地址:http://www.cnblogs.com/wuhao-bky/p/6403868.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!