面向对象设计具备三种特性:封装、继承、多态
多态是面对对象程序设计中代码重用的一个重要机制,它表示当同一个操作作用在不同的对象的时候,会出现不同的语义,从而会产生不同的结果。比如:同样是“+”操作,3+4用来实现整数的相加,而“3”+“4”却实现了字符串的连接。在Java语言中,多态主要有以下两种表现方式:
(1)重载(Overload)
重载是指同一个类中有多个同名的方法,但这些方法有着不同的参数,因此可以在编译的时候就确定到底调用哪个方法,它是一种编译时多态。重载可以被看作一个类中的方法的多态性。
(2)重写(Override)
子类可以重写父类的方法,因此同样的方法会在父类与子类中有着不同的表现形式。在Java语言中,基类的引用变量不仅可以指向基类的实例对象,也可以指向其子类的实例对象。同样,接口的引用变量也可以指向其实现类的实例对象。而程序调用的方法在运行期间才能动态绑定(绑定指的是将一个方法调用和一个方法主体连接到一起),就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。通过这种动态绑定的方法实现了多态。由于只有在运行时才能确定调用哪个方法,因此通过方法重写实现的多态也可以称为运行时多态。