我知道这个问题已经被提出过很多次了。但我找不到关于所有这些变量的完整指南。我发现了几篇比较类变量与类实例变量的文章,但是实例变量呢?那么,实例变量、类变量和类实例变量
之间有什么区别?哪些变量是可继承的,哪些不是?
问问题
407 次
2 回答
4
实例变量是属于一个特定对象(又名实例)的变量。在这种情况下,继承是无关紧要的,因为对象不能从任何东西继承,只有类可以。
类实例变量不存在。类和任何其他对象一样是对象,因此它们可以像任何其他对象一样具有实例变量。当一个类有一个实例变量时,这有时被称为类实例变量,但它只是一个实例变量。所以,再一次,它不能被继承。
类变量是奇怪的野兽。它们之间共享
- 班级本身
- 类的所有实例
- 该类的所有子类
- 类的所有子类的所有实例
- 类的所有子类的所有子类
- 类的所有子类的所有子类的所有实例
- ……等等……</li>
考虑到它们的共享范围有多广,它们实际上更像是全局变量。
您可以将其称为共享继承,但我认为这不是一个有用的术语。没有多态调度,没有消息发送,没有覆盖。
在 Ruby 中,术语继承实际上只对方法有意义,对变量没有意义。
于 2012-08-21T11:41:10.477 回答
0
实例变量是其数据随对象的每个实例而变化的变量。
类变量是在类的所有实例之间共享的变量。实际上,每个实例都指向相同的值,并且在所有类实例中都可以看到变化。
于 2012-08-21T11:37:50.080 回答