什么是多态
百度百科是这样说的:多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述——多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自“Delphi4 编程技术内幕”)。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。
上面可以归纳为几句话:
- 接口的多种不同的实现方式即为多态
- 多态允许将子类类型的指针赋值给父类类型的指针
- 多态允许不同子类型的对象对同一消息做出不同的反应
分类
多态分为编译时多态和运行时多态
- 编译时多态:方法重载就是编译时多态的体现,它可以针对同一个消息做出不同的响应,并且在编译期就知道即将调用的是哪一个重载方法。
- 运行时多态:方法重写是运行时多态的体现,java会根据不同的子类型对象动态调用方法,做出不同的响应。