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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戎石锁 中级黑马   /  2012-8-10 16:29  /  1680 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

多态:
        体现:父类的引用指向了子类的对象。
                基本操作思想:以前创建本类对象,调用该对象的方法,指挥对象做事情,可是当对象太多是,指挥变的很麻烦。               
                                        可以找到这些对象的共性类型,对这些共性类型进行操作,这样可以把复杂的事情简单化
        前提:类与类之间必须有关系,要么继承,要么实现。
                  一般都会有覆盖动作。
        好处:提高了程序的扩展性。
                  后期派生出来的子类的功能内容可以被前期所写的代码使用。
        局限性:只能使用子类覆盖父类中的功能,子类的特有功能,不能使用。

例子:

Animal a = new Cat();  // 类型(引用型)提升。向上转型。   
a 只能用Animal中的方法。                              
                                                        
Cat c = (Cat)a; // 向下转型。                                
c 即可用Animal中的方法,也可以用Cat中的方法。
Dog d=(Dog)a; // 类型转换异常         



向下转型:当需要调用到子类的特有数据时。
向上转型:当只使用子类覆盖父类功能的功能,不使用子类特有功能时。(强制转换异常)
例子:
毕姥爷 x = new 毕老师();
x.讲课();// 调用的是(子类)毕老师的讲课功能

毕老师 y = (毕老师)x;
y.看电影();// 调用的是(子类)毕老师的看电影功能。
判断应用型对象所属类型:用 instanceof
        (对象名  instanceof  引用类型) 返回boolean类型值
判断子类型,强转父类型
(面试)
多态出现后,调用子类成员的特点:
1,        成员变量:
编译运行看左边。
2,        成员函数:
编译看左边、运行看右边
(所属于对象)
3,        静态函数:
编译运行看左边

        静态方法是绑定在所属的类上的,所以他只参考引用变量所属的类。
例子:
Fu  f = new  Zi ();
f.num = 2; //  给父类变量num赋值 ,引用谁,调用谁。
f.method()  ;// 调用时,编译检查父类是否有method()函数,运行调用子类中的method方法
// 如果method()方法是静态的,调用的是父类的method()方法。
因为静态方法绑定在所属的类上。

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1 很给力!

查看全部评分

1 个回复

倒序浏览
{:soso_e179:}  顶一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马