zoukankan      html  css  js  c++  java
  • 10th week task -2 Object 的起源

    Objective-C与C++、Java等面向对象语言类似,不过很多方面有所差别。若是用过另一种面向对象语言,那么就能理解Objective-C所用的许多范式与模版了。然而语法上也许会显得陌生,因为该语言使用“消息结构”(messaging structure)而非“函数调用”(function calling)。Objective-C语言由Smalltalk演化而来,后者是消息型语言的鼻祖。消息与函数调用之间的区别看上去就像这样。

     //Messaging (Objective-C)

      Object *obj = [Object new];

      [obj performWith:parameter1 and:parameter2];

      //Function calling (C++)

      Object *obj = new Object;

      obj->perfrom(parameter1, parameter2);

    关键区别在于:使用消息结构的语言,其运行时所应执行的代码由运行环境来决定;而使用函数调用的语言,则由编译器决定。如果范例代码中调用的函数是多态的,那么在运行时就要按照“虚方法表”(virtual table)(PS:virtual method table是编程语言为实现“动态派发”(dynamic dispatch)或“运行时方法绑定(runtime method binding)而采用的一种机制”) 来查出到底应该执行哪个函数实现。而采用消息结构的语言,不论是否多态,总是在运行时才会去查找所要执行的方法。实际上,编译器甚至不关心接收消息的对象是何种类型。


     Objective-C为C语言添加了面向对象特性,是其超集。Objective-C使用动态绑定的消息结构,也就是说,在运行时才会检查对象类型。接收一条消息后,究竟应该执行何种代码,由运行期环境而非编译器来决定

  • 相关阅读:
    flash 中无法导出swf文件的解决方法
    codeforces 341C Iahub and Permutations(组合数dp)
    CSS里的 no-repeat 是什么意思
    linux enable命令学习
    config large memory
    java中集合杂记
    Linux操作系统以及各大发行版介绍——Linux operating system and major distribution is introduced
    KVM几种缓存模式
    Elastic-Job
    日交易额百亿级交易系统的超轻量日志实现
  • 原文地址:https://www.cnblogs.com/yitaqiotouto/p/9932755.html
Copyright © 2011-2022 走看看