Trait (计算机科学) Trait在面向对象程序设计中是一个不可实例化uninstantiable的方法与类型的集合为一个对象或算法提供了策略policy或实现自身接口的细节功能trait为类提供了一套方法同时也意味着类必须实现这么一套方法 在面向对象程序设计中protocolinterfacetraitmixin具有类似的涵义protocolinterface定义了函数原型trait还定义了方法的完全实现mixin除了方法的完整实现还可以通过成员变量保存了状态信息而trait通常不会如此理论上traits支持一批組合composition操作 合并不相交的traitssymmetric sum产生一个新的trait 覆盖asymmetric sum对一个已有的trait增加方法可以覆盖已有的方法 别名alias 对已有方法增加别名从而产生一个新的trait 排除exclusion从已有trait中删除方法从而产生一个新的trait 嵌套的trait自动平面化例如 给定trait S  A  X 其中 X  B  C 那么trait T  A  B  C 等价于 S