Skip to content

浅谈java和javascript中的多态 #13

@noneven

Description

@noneven

什么是多态?

  • 初略理解:

    多态指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(消息就是指函数调用)[比如继承:父类的实例和子类的实例调用同一个方法,如果子类重写了父类的方法,那么父类和子类就可以采用不同的行为处理]

  • 进一步理解:

    所谓多态就是指不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态[比如函数重载:根据函数调用的参数类型和参数数量采用不同的行为方式,而不用修改代码],这就是多态性。

Java和JS中的多态

  • 在java(强类型语言)中 多态表现在一下三个方面:
    1、继承(子类重写父类方法[父类虚函数])
    2、方法重载(根据参数的差异触发不同的行为[参数个数、参数类型])
    3、父类声明子类(类型检查[绕过类型检查])
  • 在javascript(弱类型语言)中 多态表现在一下三个个方面:
    1、继承(子类重写父类方法[严格来说JS没有类,没有虚函数])
    2、方法重载(根据参数的差异触发不同的行为[参数个数,JS的弱类型不检查参数类型])
    3、context重指(bind/call/apply改变函数内部this指向,使得同一段程序有不同的行为)

现实中的多态举例

1、键盘上面统一个按键在不同的软件上有不同的行为

以上是个人理解,有误请指出
转载请注明出处

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions