7.4.6 类型的属性

7.4.6 类型的属性

目前为止,我们使用的属性都是绑定在类的实例上,需要通过实例才能访问或者设置,但有些场景中的一个属性是跟这个自定义类型本身相关的,比如Person这个类本来就表达了人类,所以isHumanBeing其实更应该是这个类型本身的属性,而非这个类生成的实例。此时便可使用类型的属性来解决这类问题。

Swift给类型也提供了增加属性的办法,称为类型属性(type property)。这类属性不需要实例一个类型才能访问到,只需通过这个类型本身就可以实现。值类型的类型属性也有存储属性和计算属性两种,在定义值类型的类型属性时使用static关键字,在定义类的类型属性时可以用static,也可以用class。class是让子类能够为某个属性覆写自己的实现,在覆写时,需要加override关键字。

现在将Person的isHumanBeing变为类的属性:

只需要在原来声明的基础上增加static即可。在main.swift中打印:

控制台输出如下:

用类型名去获取类型属性,实例中已经没有这个属性了。读者也可以自己尝试将实例中的方法变成类方法。