多态
1.多态的格式即使用
代码中体现多态性,其实就是父类引用指向子类对象。
格式:(左父右子)
父类名称 对象名 =new 子类名称();
接口名称 对象名 =new 实现类名称();
public class Fu{
public void method(){
System.out.println("父类方法输出!");
}
}
public class Zi extends Fu{
@Override
public void method(){
System.out.println("子类方法输出!");
}
}
public class Demo01{
public static void main(String [] args){
Fu obj =new Zi();//这就体现了多态性
obj.method();//new的是谁就运行谁,没有向上找
}
}
2.多态中成员变量以及成员方法使用特点
访问成员变量的两种方式:
①:直接通过对象名称访问成员变量,等号左边是谁就优先用谁,没有则向上找
②:间接通过成员方法访问成员变量,看该方法属于谁则优先用谁,没有则向上找
(编译看左边,运行还看左边)
访问成员方法的规则:new的是谁则优先用谁,没有则向上找
(编译报错看左边有没有,运行看右边有没有)
3.使用多态的好处
4.对象的向上向下转型
向上转型一定是安全的,但是也有一个弊端:一旦向上转型为父类,那么将无法调用子类原本特有的内容
解决方法:对象的向下转型(实则是一种还原),必须原来是那种才行
5.instanceof关键字
如何才能知道一个父类引用对象,本来是什么子类?
使用instanceof关键字:
对象 instanceof 类名称
这将会得到一个Boolean值结果,也就是判断前面的对象能不能当成后面类型的实例
Animal animal=new Cat();//创建一个cat使其向上转型成animal
if(animal instanceof Cat){//看其能否还原成cat
Cat cat=(cat)animal;
}
Comments NOTHING