Java三大基本特性:封装、继承、多态,多态建立在封装与继承的基础之上。
一、方法的多态
方法的重写是多态的体现方式之一。
方法的重载不是多态。
多态要有动态绑定,否则就不是多态,方法重载也不是多态(因为方法重载是编译期决定好的, 没有后期也就是运行期的动态绑定)当满足这三个条件:1、有继承 2、有重写 3、要有父类引用 指向子类对象。
子类在继承父类时重写父类的方法,父类的一个方法可以在子类中有不同的表现形式。
二、对象的多态
一个对象的编译类型和运行类型不一样;
多态就是父类的引用指向子类的对象:
Animal animal = new Dog();
Animal anima1 = new Cat();
编译类型看等号的左边,运行类型看等号的右边。
三、多态的转型
3.1多态的向上转型
语法格式:
父类 父类引用 = new 子类();
将子类的对象赋值给了父类的引用。小范围(子类) 转为大范围(父类)自动转
父类的引用可以调用父类的所有成员方法,可以调用子类的重写父类的方法,但是不能调用子类独有的方法。
3.2多态的向下转型
语法格式:
父类类型 父类引用 = new 子类();
子类类型 子类引用 = (子类类型)父类的引用;
向下转型需要强制转换。
总结
多态首先是建立在继承之上的,没有继承就没有多态。