1、定义:
父类的引用变量指向子类的对象
2、格式
父类类型 变量名 =new 子类对象
变量名.方法名()
3、前提:
1、继承或者实现(普通类继承,抽象类继承,接口的实现)
2、方法的重写(必须有重写,否则没有意义)
4、多态后的成员特点
多态之后,访问成员变量:
a、父类中没有这个成员变量,报错
b、父类中有这个成员变量,无论这个成员变量和子类的成员变量是否重名,都是返回父类的成员变量
多态之后,访问成员方法:
a、父类中没有这个方法,报错
b、父类中有这个方法,但是没有被子类重写,返回父类的方法
c、父类中有这个方法,且被子类重写,返回子类的方法
5、多态的转型
a、向上转型(自动类型提升):
多态就属于这一类,只能访问父类的内容,或者是重写的的子类方法
b、向下转型(强制类型转换):
double b=1.0
int a=(int)b //基本类型的强制转换
Fu fu =new Zi() //对象的强制转换
Zi zi=(Zi) fu //本身是子类对象,向上转向为父类对象,可以再转为子类对象。但是如果本身是父类对象,则不可以向下转型为子类对象
5、instanceof
boolean b=对象 instanceof 类型
6、多态的一个应用
当方法的参数是接口的时候,可以传入其实现类对象,匿名内部类
当方法的参数是抽象类的时候,可以传入其子类对象,匿名内部类
当方法的参数是具体实现类的时候,可以传入本类对象及其子类,匿名内部类
当方法的返回值类型为接口的时候,可以传入其实现类对象,匿名内部类
当方法的返回值类型为抽象类的时候,可以传入其实现类对象,匿名内部类
当方法的返回值类型为具体实现类的时候,可以传入其实现类对象,匿名内部类