A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 飞龙传神 中级黑马   /  2015-8-17 23:00  /  184 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态(动态绑定机制):
        概念:某一对象(事物),在不同时刻表现出来的不同状态
                猫 m = new 猫();
                动物 d = new 猫(); 猫是动物的一种,可以把猫称为动物
       
        多态的前提和体现:
                a.有继承关系
                b.有方法重写
                        可以没有重写,但是没有重写,多态就没有意义
                        不同的状态有不同的表现,所以要有重写
                c.有父类引用指向子类对象
                        父 f = new 子();

        (***)多态中的成员访问特点:
                A.成员变量:
                        编译看父类(父类中是否有该变量),执行看父类
                        (成员变量作为属性, 是事务的描述信息, 不能改变
                                父类的描述信息不能改变)
                B.构造方法
                        创建子类对象的时候,访问父类的构造方法,对父类数据进行初始化
                C.成员方法
                        编译看父类(父类中是否有该方法),执行看子类
                        (由于成员方法存在方法重写,所有执行的时候要看子类的该方法)
                D.静态方法
                        编译看父类,执行看父类
                        (静态方法是类成员,算不上重写,所以执行的时候依然访问父类方法)
                       
       
        动态绑定: 编译的时候, 首先查看左边父类中是否有该成员,
                        运行的时候,动态地绑定到子类的方法上
多态的好处:
                a.提高了代码的维护性(继承保证)
                b.提高了代码的扩展性(由多态保证)
                        把父类名作为形式参数, 传递子类实参
       
        多态的弊端:
                不能使用子类的特有功能.
                解决方法:
                        a.创建子类对象(不合理,且占内存)
                        b.把父类的引用强制转换为子类引用(向下转型)   
                                Zi z = (Zi)f
        对象间的转型问题:
                向上转型:
                        Fu f = new Zi();
                        (**)向上转型少用, 开发中多用把父类名作为形式参数
                向下转型:
                        Zi z = (Zi)f;
                向下转型的目的:
                        使用子类特有的功能
       
        ClassCastException 类转换异常: 多态中向下转型中出现的类型不铺配

        多态的类型:
                具体类多态(几乎不用)
                抽象类多态(常用)
                接口多态(最常用)

2 个回复

倒序浏览
课程笔记,还不赖~
回复 使用道具 举报
get!!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马