多态
面向对象的第三大特性。
一种事物在不同情况下的多种形态。
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{
}
|
|