多态产生的必要条件
1、要有继承
2、要有重写(覆盖Override)
3、子类对象赋给父类引用变量(父类引用指向子类对象)
向上转型:父类引用为编译时类型,子类对象时运行是类型
转型之后
新建的对象有父类所有属性以及子类从写的方法。
向上转型后只有父类所有方法和子类中重写父类的方法(父类被重写的失效)
只能用父类所有+子类重写
向下转型:子类引用为编译时类型,父类对象时运行是类型
也就是说,在向下转型之前,它得先向上转型
2 .多态的第二种使用场景 (对象引用接收)
- package cn.itcast.demo1;
- public class TestPerson {
- public staticvoid main(String[] args) {
- Person p= new Barber();
- p.setName("理发师");
- cut(p);
- }
- // 使用场景一 : 设计一个方法时, 尽量将参数类型设计为父类引用, 因为父类引用可以接收所有子类对象.
- // 行为 : cut 行为真正需要的是一个人
- public staticvoid cut(Person p) {
- p.doSomething();
- }
- }