尽管从技术上来讲,分类里能够声明属性,可是这种作法仍是要尽可能避免,缘由在于,除了 class-continuation 分类(延展)以外,其余分类都没法向类中新增实例变量,所以,他们没法把实现属性所需的实例变量合成出来。
spa
正确作法是把全部属性都定义在主接口中,这是惟一可以定义实例变量的地方。而属性只是定义实例变量及相关存取方法所用的“语法糖”,全部也应遵循同实例变量同样的规则。接口
至于分类机制,则应该将其理解为一种手段,目标在于扩展类的功能,而非封装数据io
封装数据所用的所有属性都定义在主接口中class
在class-continuation外其余分类中,能够定义存取方法,但尽可能不要定义属性
变量