一:首先明确java面向对象的三大特性是封装,继承以及多态。只有有了封装,继承,才会有多态。
二:多态:多态指的是对象的同一行为的不同形态,通俗点讲就是,调用同一个方法,但是呈现的功能却是不一样的
三:多态分为编译时多态与运行时多态
1.编译时多态:编译期就确定了调用类的哪一个方法,如方法的重载,相同的方法名,但是根据参数列表的不同,在编译期就确定了调用哪个方法
*多态的体现:某个对象调用同一个方法,表现出不同的功能(由传入的参数决定)
2.运行时多态:实现方式有继承父类以及实现某一个接口,即向上转型(父类引用子类实例对象)。如继承父类后方法的重写,编译器只会编译父类,从而确定父类。但是没有确定调用哪个具体的子类,如只会编译父类的静态成员变量,非静态成员变量,方法等,运行时看子类,去调用子类覆盖重写的方法,若子类没有重写,则调用父类的方法(即面向抽象、接口编程)
*多态的体现:当接口或父类调用同一个方法时,会呈现出不同的功能(由实际子类来决定)
另:多态是面向对象,面向抽象,面向接口编程的有力支持,是实现解耦的重要技术