奇思妙想 · 2024年 5月 12日 0

不同编程语言的属性

16 次浏览
  • C语言不支持属性。
  • ObjC: 支持属性较早的编程语言,使用@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判断类或者对象是否存在某个属性,并修改或新增属性(如果不存在)。