第四章 面向对象之多态

Polymorphism   多态

Instance  实例      

Override 重写

Constructor构造函数   (抗死抓K特)

ClassCastException   类型转换异常    exception 异常

Upcasting 向上转型   

Downcasting 向下转型

Abstract 抽象

1_多态的概述

面向对象的三大特征之一:  封装 、继承 、多态 、抽象、

多态是同一个行为具有多个不同表现形式或形态的能力。 继承是多态的前提。

第四章 面向对象之多态

2_多态的格式与使用

* 代码当中体现多态性,其实就是一句话:父类引用指向子类对象
*
* 格式:
* 父类名称 对象名 = new 子类名称();
* 或者
* 接口名称  对象名 = new 实现类名称();
*/

 

第一步:ch04.com.obtk_01.Demo01Multi

第四章 面向对象之多态

第二步:创建父类Fu

第四章 面向对象之多态

第三步:创建子类:Zi

第四章 面向对象之多态

提问:现在父类和子类方法一样,

以前我们创建对象都是子子new子,跟父类没关系,那我现在要通过多态的写法。

第四步:测试Demo01Multi

第四章 面向对象之多态

第五步:如果子类没有的方法怎么办?

第四章 面向对象之多态

第六步:测试Demo01Multi,

第四章 面向对象之多态

其实规律我们此前已经接触过,只不过我现在把概念告诉大家,什么叫多态?一句话左父右子就叫多态。

右侧子类对象就被当做父类使用,一只猫被当做动物看待,这是没有什么问题的,因为子类就是一个父类,在这里体现了面向对象的多态性。

3_多态中成员变量的使用特点

此前我们曾经总结过在继承关系中成员变量的访问特点,那么接下来我用多态的写法-这个成员变量的访问特点是否有变化?注意:没有任何变化

* 访问成员变量的两种方式:
*
* 1、直接通过对象名称访问成员变量:看等号左边是谁,优先用谁,没有则向上找。
* 2、间接通过成员方法访问成员变量:看该方法属于谁,优先用谁,没有则向上找。
*/
 

 

第一步:ch04.com.obtk_02.Fu

第四章 面向对象之多态

第二步:ch04.com.obtk_02.Zi

第四章 面向对象之多态

第三步:Demo01MultiField 访问成员变量的两种试

第四章 面向对象之多态

第四章 面向对象之多态

4_多态中成员方法的使用特点(其实成员方法的规则也没有变化) * 在多态的代码当中,成员方法的访问规则是:
*    看new的是谁,就优先用谁,没有则向上找
*
*    口诀:编译看左,运行看右边
*       编译时候,看左边的对象有没有方法,
*        运行时结果看new的对象是谁,就调用谁的方法
*
*对比一下:
*  成员变量:编译看左边,运行还看左边。
*  成员方法:编译看左,运行看右边。
*/
 

第一步:在上一个包里创建类:Demo02MultiMethod.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwpsp.html