Project1
标题: 类是类还是实例 [打印本页]
作者: 英顺的马甲 时间: 2016-11-3 23:29
标题: 类是类还是实例
相信大家都知道如果
那么$a就是A的实例,因此
A虽然是一个类(Class),但同时也是一个名为类(Class)的类的实例
那么既然是实例,那么也就是一个对象
A.is_a?(Object) # => true
A.is_a?(Object) # => true
所以类既是自己的实例也是自己的类同时也是自己的对象
a = Class
a.is_a?(Class) # => true
a.is_a?(Object) # => true
p a = a.class while(a == Class)
a = Class
a.is_a?(Class) # => true
a.is_a?(Object) # => true
p a = a.class while(a == Class)
Class<?> kelas = Class.class
System.out.println(kelas instanceof Object)
System.out.println(kelas == Class.class)
for(kelas = Class.class; kelas == Class.class; kelas = kelas.getClass())
System.out.println(kelas);
Class<?> kelas = Class.class
System.out.println(kelas instanceof Object)
System.out.println(kelas == Class.class)
for(kelas = Class.class; kelas == Class.class; kelas = kelas.getClass())
System.out.println(kelas);
随后类到底是类还是实例还是对象呢?
只是突然觉得这个问题可以思考罢了,各位可别太认真==
作者: 喵呜喵5 时间: 2016-11-3 23:35
实例和对象有什么区别?
作者: shitake 时间: 2016-11-5 18:59
第二句就有问题了 应该说$a是A实例的引用。
作者: 唯道集虚 时间: 2016-11-5 23:20
感觉楼主的理解可能有些问题?
Ruby的语法我不太清楚,甚至连怎么写派生类都不懂…
但是我的面向对象世界观是,Class的实例化对象、由基类派生类等等……总是有和实例相近的地方……如果以“类是实例”作为比喻,虽然感觉有些引喻失意,但应该也没有什么太多不妥。只是如果不是比喻……就不太合适了吧?
(不太理解Ruby语法就没看代码 如果文不对题那还请见谅
作者: IamI 时间: 2016-11-5 23:54
好古老的问题……
Constant Class is a Class.
Constant Class is Object of Class Class.
All mentioned above is Object(s).
Object is a Class.
年轻人好好写码不要去纠结什么世界本源的问题
作者: Mr.Jin 时间: 2016-11-6 00:44
Ruby里
类本身也是一个对象 这是可以肯定的
当你定义一个类时 实际上创建了一个Class类的实例的常量
- class Player
- def initialize(name)
- @name = name
- end
- def name
- return @name
- end
- end
复制代码
- Player = Class.new do
- def initialize(name)
- @name = name
- end
- def name
- return @name
- end
- end
复制代码
都可以说得通
作者: RaidenInfinity 时间: 2016-11-6 10:07
class A < Object
作者: chd114 时间: 2016-11-7 01:27
你可以参考数组套数组什么的···数组里的元素也可以是数组啊
作者: yang1zhi 时间: 2016-11-7 12:15
他不能3个都是吗
作者: taroxd 时间: 2016-11-7 16:36
既是类也是实例
作者: Vortur 时间: 2016-11-7 18:41
本帖最后由 Vortur 于 2016-11-7 01:33 编辑
谢谢!~@唯道集虚
不过确实,在下是一个怪人呢...TAT..
[line]1[/line]
一、 感觉论述有问题,比如:“既然是实例,那么也就是一个对象”。
据在下所知,Ruby皆对象。因此,“Ruby皆对象”是一个基本属性(基本属性==本质属性,只要不具备这个属性,那么就不是Ruby中的东西)。通常人们把它作为一个【最简属性】(不可分、以此来推导其他结论。例如用勾股定理来解题,那么勾股定理就是最简属性,而解出的答案则是“复合属性”。复合属性的正确性由最简属性决定和支持。)来使用。
从“类”那句就已经是对象了,实例也是对象。“既然是实例,那么也就是一个对象”给人一种抽象层次混乱的感觉。
二、 名称的必要性,由互异性决定
互异性由具体情境决定。
可以理解为“在一个集合(抽象层次)中,各对象需要有足够的不同”。比如美洲豹可能有十几种英文称呼;在通常的、实际交流环境中,我们就叫它美洲豹就可以了,这就是“在我们的交流环境这个【抽象层次】里,美洲豹各类称呼没有足够的【互异性】的表现”。但在英文的、专业的、语言学的“抽象层次”里,这十几种英文称呼就具有了足够的“互异性”。
是类是对象还是实例,要看具体的语言环境。
笼统的来说,这三种都是。但在下最长见到的“子类”,都是因为游戏运行中,要使用一个父类的部分功能,但还要增减【一些新的功能】;那么在游戏运行这个抽象层面中,【一些新的功能】就是【足够的互异性】,这也是为何子类父类能够相互区别的原因。
“$a = A.new”这个例子中,并未涉及$a的调用等具体信息,故就目前看来,【楼主在讨论一个脱离了实际情境、有过分抽象嫌疑的问题】。当然,楼主的问题也不是没有可能真的没有价值,但“过分抽象”应该是一个最容易遭人诟病的点了。
意象和抽象的区别
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |