Trait (电脑科学)
维基百科,自由的 encyclopedia
Trait在面向对象程式设计中,是一个不可实例化(uninstantiable)的方法与类型的集合,为一个对象或算法提供了策略(policy)或实现自身接口的细节功能。trait为类提供了一套方法,同时也意味着类必须实现这么一套方法。
此条目没有列出任何参考或来源。 (2013年11月15日) |
在面向对象程式设计中,protocol、interface、trait、mixin具有类似的涵义。protocol/interface定义了函数原型;trait还定义了方法的完全实现;mixin除了方法的完整实现,还可以通过成员变量保存了状态资讯,而trait通常不会如此。理论上,traits支持一批组合(composition)操作:
- 合并不相交的traits(symmetric sum)产生一个新的trait
- 覆盖(asymmetric sum):对一个已有的trait增加方法,可以覆盖已有的方法
- 别名(alias): 对已有方法增加别名,从而产生一个新的trait
- 排除(exclusion):从已有trait中删除方法从而产生一个新的trait
- 嵌套的trait自动平面化。例如 给定trait S = A + X, 其中 X = B + C, 那么trait T = A + B + C 等价于 S