我很难理解教授的讲义,因为我的大脑似乎将对象,属性,变量和类实例视为可互换的。在区分这四个术语方面,我深表感谢。谢谢!
答案 0 :(得分:1)
这对您访问https://www.quora.com/What-is-the-difference-between-instance-variable-and-class-variable
有帮助使用关键字static声明类变量,而使用static关键字声明实例变量。
类变量是类的所有实例共有的。这些变量在类的对象之间共享。实例变量不在类的对象之间共享。每个实例都会有自己的实例变量副本。
由于类变量是类的所有对象共有的,因此通过一个对象对这些变量所做的更改将反映在另一个对象中。由于每个对象都有自己的实例变量副本,因此通过一个对象对这些变量所做的更改不会反映在另一个对象中。
可以使用类名称或对象引用来访问类变量。实例变量只能通过对象引用来访问。
https://qph.fs.quoracdn.net/main-qimg-c4b92e80a8500c11fe705c1bafc3ed26
答案 1 :(得分:0)
您没有提到有问题的编程语言。
通常,类是声明以下内容的模型或模板 某类对象的外观如何。
您给一个类命名,并提及它是否继承 是否来自其他班级。
您还定义了班级成员。 这些可以是保存数据的变量(对象状态) 和定义的方法(类定义的函数) 对象的行为。
使用声明的模型实例化一个类时 ,您将获得一个对象,即一个具体的类实例。 这是一个具体的实体,将其视为内存中的新变量, 其数据类型是类(而不是例如 整数或字符串数据类型),其值为其状态 在规定的时间(状态为 其所有数据成员变量值的组合 在那一刻)。该对象必须具有身份, 因为它存在于内存中,并且是一个不同的实体 从其他对象,您可以从中实例化或 任何其他班级。数据成员变量具有特定的 每个实例的值。这些不共享 实例。
现在,成员方法可以在实例之间共享 因为它们没有状态,所以每个对象都相等。 他们被称为带有一些论点 然后他们做一些改变对象状态的动作,或者 至少与具体对象紧密相关。 但是它们对于每个对象都是通用的。通常的方法 知道他们通过特殊的方式作用于什么具体对象 诸如“ this”或“ self”之类的名称,引用了“ itself”。
对象通常在创建时分配给变量, 存储对其身份的引用,以允许 剩下的代码来操作它们。
您使用这些变量来引用具体对象 在类的代码之外,并使用“ this”或“ self” 从班级内部引用它。
您经常访问符合以下条件的对象成员: 对象名称。就像在“ player.run()”或“ player.total_score”中一样。 也就是说,如果玩家是您为其分配了一个变量的变量 类Player实例。看起来像玩家=新玩家 或玩家= Player()。
属性只是赋予数据成员的另一个名称。 有时属性和方法可以是公共的或私有的, 意味着类外的代码可以使用它们,或者仅 班级代码可以访问。
有时您会看到数据成员或属性称为 属性。访问属性时,您正在访问 财产。在某些语言(例如Python)中,属性可能意味着 有点不同,但仍然密切相关...
现在还可以根据语言描述事物 (C ++,Java),也可以将所有内容都视为对象, 包括类定义(Python)。
我希望这会有所帮助,您还应该搜索互联网或有关 继承,覆盖,类图和其他类 相关。
这仅仅是定义自己的数据类型的能力 语言内置类型之外。
您可以将变量视为具有值的框(某个地址中的内存容器)的名称。但是有时候你想操纵 不是值,而是地址本身。这次你说你有 参考(地址)。有时变量只是这些变量的名称 参考。引用也称为指针。但是您可以使用通常不使用引用的指针进行数学运算(递增,递减,向其添加固定值...)。