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

© 挨踢小白 中级黑马   /  2016-11-20 22:59  /  923 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


多态

面向对象的第三大特性。

一种事物在不同情况下的多种形态。

1.多态的前提要有继承
2.最好有方法重写
3.父类引用指向子类对象

动物 d =new 驴();


多态格式

父类类型 变量名= new 子类类型();

父类是个具体的类 可以有多态 具体类多态
        抽象的类  也可以有多态 抽象类多态
        接口        也可以有多态度         接口多态


总结: 父类/父接口 引用变量=new 子类/实现类();

------------------------
多态中成员变量的访问特点


       
编译阶段        看等号左边(检查语法错误 检查该类型中有没有这样的成员)
运行                看等号左边

“编译看左边 运行看左边”


多态中成员方法


运行看右边,编译时候全部看左边。
运行时候呢,只有成员方法看右边,其他的看左边。

运行时,成员方法先去子类中找,没有再去父类中找。

(注:这块儿易懵逼,且行且珍惜)
--------------------------------
关键字 instanceof 判断

对象 instanceof 类型
(判断这个对象 是不是属于这个类型)

结果为(true 或者false)

--------------------------------
多态 转换
Animal a =new Cat();
Cat c= (Cat)a;
c.play ();
向下转型 父类类型往子类类型转

当你做向下转型时 需要知道 转换的父类类型
必须指向要转换的子类对象;

转换ok

if(a instanceof Cat){
Cat c=(Cat)a;
c.paly();

}else if(a instanceof Dog){
Dog d=(Dog)a;

}else{


}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马