跳至内容
- C语言不支持属性。
- ObjC: 支持属性较早的编程语言,2.0版本开始支持属性,使用@property和@synthesize声明和自动生成属性get/set代码。
- 例如person对象有一个age属性,[person age]或person.age都代表获取age属性,person.age = <value>或[person setAge: <value>]都代表设置age属性。
- C++:C++11开始引入了属性,并不是用于成员变量,而是给编译器提供信息,例如揭露函数是废弃的。
- [[deprecated(“The function is deprecated”)]] void test();
- 属性功能在Java/C#早期版本就有支持,C++是借用。
- Java默认不支持类成员属性,需要手动写set/get方法模拟属性读写。
- C#和Swift属性都可支持get/set可选属性。
Swift还提供类型属性和静态属性,可为class而非实例提供属性读写,静态属性将不支持子类重写。当然,本质上,这两种属性都是“全局变量”。
C#还支持自动属性AIP可以更简便创建属性。
- Python提供类属性的hasattr和setattr判断类或者对象是否存在某个属性,并修改或新增属性(如果不存在)。