多态:不同的对象完成时会产生不同的结果
多态的实现条件:
①必须在继承的关系下;
②必须发生向上转型;
向上转型:创建一个子类对象,把它当作父类对象来使用。即把子类对象给父类
向上转型的三种方法:
A、直接赋值
理论上赋值等号的两边应该为同一类型,否则赋值失败。但此时Animal和Dog构成了父子类关系,所以此时为向上转型。
注意:当我们发生向上转型之后,此时通过父类的引用,只能访问父类自己的成员,不能访问子类特有的成员,比如:wangwang() 这个成员方法
B、方法传参
此时实参传的是Dog类型的,形参用Animal类型来解释
C、作为返回类型
③子类必须对父类的方法进行重写
重写:①方法名和类名相同;②参数列表相同;③返回值相同
此时子类和父类中的eat()方法就构成了重写
@Override:表示当前这个方法被重写
重写时需要注意:
①父类中被static、private、final修饰的方法、构造方法都不能重写
②子类的访问修饰限定权限要大于等于父类的权限
private < 默认 <protected < public
③区分重载和重写
实现多态:
此时就实现了不同的对象完成时产生不同的结果