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.