多态:同一个对象在不同时刻表现出来的形态
多态的前提和体现:
- 有继承/实现关系 一旦形成继承关系,那么现在实例化子类的时候,可以使用不同的对象类型,接受这个子类对象
Animal ani = new Cat(); //多态的使用过程
- 有方法重写:子类中必须重写父类的方法
- 有父类引用指向子类对象 :实例化父类对象的时候,必须使用父类的类型对象名接受子类的对象实例
多态中成员访问特点:
- 成员变量:编译看父类,执行看父类
- 成员方法:编译看父类,执行看子类
执行不一样的原因:成员变量没有重写而成员方法有重写
使用多态调用方法特点:
- 1.如果调用的是父类中的普通方法(方法没有被重写),直接就能调用
- 2.如果调用父类中不存在,即子类中的方法没有重写父类的方法,直接就会报错
- 3.如果调用的方法在子类中重写了,那么直接可以调用
使用多态调用属性的特点:
- 只能调用自己的属性,不可以调用子类的属性
多态的好处和弊端:
- 好处:提高了程序的扩展性,具体变现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作。
- 弊端:不能使用子类的特有功能
多态中的转型:
- 向上转型:父类引用指向子类对象就是向上转型
- 向下转型:格式:子类型 对象名=(子类型)父类引用;