一、多态是什么?
多态是指同一个方法名,不同的实现结果。多态分为:编译时多态和运行时多态。
1.编译时多态:又叫方法重载。指在一个类中,方法名相同,参数列表不同,与返回值类型无关,称为方法重载。那么决定调用哪个方法,是由参数列表确定的。因为参数列表是在编译期间就确定了,所以称之为编译时多态。
示例代码:
分别输入参数为整型和字符串类型,运行结果:
2.运行时多态:又叫方法重写。指在继承关系中,方法名相同,参数列表相同,返回值类型相同,也就是子类对父类方法的重写。那么具体调用哪个重写的方法,是由实际创建的对象来决定的。因为创建对象是在运行期间完成的,所以称之为运行时多态。
示例代码:
子类Son对父类Base中方法run重写,运行结果:
二、动态绑定
动态绑定是指一个父类可以绑定多个子类,在上述代码的基础上,在声明一个子类daughter
父类可以帮绑定到子类上,并调用子类的方法:
运行结果:
需要注意的是:在进行方法重写时,父类中重写方法访问修饰符不能为private和default,且不能大于子类重写方法的访问修饰符。