Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 一个类的对象是否共享代码_Oop_Coding Style - Fatal编程技术网

Oop 一个类的对象是否共享代码

Oop 一个类的对象是否共享代码,oop,coding-style,Oop,Coding Style,如果有一个类a,我实例化了a的三个对象x、y、z,a中有一个函数foo(),那么f会有三个机器代码副本(每个对象一个) 类方法的目的是什么?当所有对象都有共享代码时,为什么还要使用类方法呢?它只是HLL程序员的抽象吗?不,不会。代码将只有一个副本。但是,每个类实例都有自己的类成员变量副本。您还询问了哪些也称为静态方法 在这种情况下,代码仍然只有一个副本,但在执行时,它只能修改静态成员,而类的所有实例(对象)都将看到静态成员。注意:尽管这原则上取决于语言,即使解释动态语言的实现,也会对同一个函数重

如果有一个类a,我实例化了a的三个对象x、y、z,a中有一个函数foo(),那么f会有三个机器代码副本(每个对象一个)


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

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

您还询问了哪些也称为静态方法


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

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