多态是面向对象非常重要的特性之一(其余两个是继承、封装);多态不是独立存在的一种特性,而是跟其他特性协同工作的
定义
不同类(继承自同一个基类)的对象对同一个的消息有不同的响应;
条件
- 继承
- 重写
- 父类指向子类
限制
- 只对普通方法有效,private、final、static方法(静态方法是与类,而非类的某个对象相关联)都不行
- 不能使用导出类的特有方法与属性
实现的机制
动态绑定,在运行时根据对象的类型进行绑定.
除了final方法(private方法属于final方法)、static方法,其余的方法都是动态绑定的
仔细阅读下面的代码,你会从代码中获得上面所说的部分证据~
代码示例
1 |
|
输出的结果
1 |
|
作用
消除类型之间的耦合性;设计模式大多数都用到了’多态’。
将改变的事物与未变的事物分离开。
1 |
|
多态只能发生在方法调用时
对自己的现状不满意只有付出更多的努力去改变它
如果有不对的地方或建议,请指出,谢谢啦