第一类对象(
英语:First-class object)在
计算机科学中指可以在执行期创造并作为参数传递给其他函数或存入一个
变量的实体[1]。将一个实体变为第一类对象的过程叫做“物件化”(Reification)
[2]。
第一类对象不一定是
面向对象程序设计所指的物件,而可以指任何程序中的实体。一般第一类对象所特有的特性为:
“第一类对象”这一名称最早由Christopher Strachey在1960年代发明,原称“第一类公民”(First-class citizen),意指函数可作为电脑语言中的第一类公民。英文中也称“First-class entity”或“First-class value”。
绝大多数语言中,数值与基础型别都是第一类对象,然而不同语言中对函数的区别很大,例如
C语言与
C++中的函数不是第一类对象,因为在这些语言中函数不能在执行期创造,而必须在设计时全部写好。相比之下,
Scheme中的函数是第一类对象,因为可以用lambda语句来创造
匿名函数并作为第一类对象来操作。