【问题标题】:Do objects of one class share code做一个类的对象共享代码
【发布时间】:2011-06-03 15:48:58
【问题描述】:

如果有一个类 A 并且我实例化了 A 的三个对象 x,y,z,并且 A 中有一个函数 foo(),那么对于 f 是否会存在三个机器代码副本(每个对象一个)?

类方法的目的是什么?当所有对象都有共享代码时,为什么还要使用类方法?它只是对 HLL 程序员的抽象吗?

【问题讨论】:

    标签: oop coding-style


    【解决方案1】:

    不,不会。将只有一份代码副本。然而,每个类实例都有自己的类成员变量副本。

    【讨论】:

    • 注意:虽然这在原则上是依赖于语言的,但即使是动态语言的解释实现也会为同一个函数重用相同的字节码块,为多个实例重用相同的函数。例如,Python 将方法存储在类对象中,而实例甚至没有对其方法的引用,只有一个对类的引用。
    • 谢谢。我了解对象将具有单独的数据存储。不过还有一件事。类方法的目的是什么?当所有对象都有共享代码时,为什么还要使用类方法?它只是对 HLL 程序员的抽象吗?
    • @farhan 我们需要每个类的方法来支持 OO 的两个关键特性——封装和多态。
    【解决方案2】:

    您还询问了Class Methods,它们也称为静态方法。

    在这种情况下,代码仍然只有一个副本,但在执行时它只能修改静态成员,类的所有实例(对象)都会看到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2014-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      相关资源
      最近更新 更多