There is no concept of an Objective-C property being a static variable. An Objective-C property is just a syntax shorthand for declaring two methods, a getter and a setter (or just a getter in the case of readonly
properties). You can override either or both of those methods in a subclass and have them get and set the value from/to a static variable/value in the subclass if you want. There's nothing preventing that.
In this case you would do this:
- (int)shapeType
{
return kShapeType_Rectangle;
}
Not to get too philosophical, but having such a property would seem to be creating a redundancy with the type system. Put differently, why have a property that you have to override in every subclass? In this case why have shapeType
return kShapeType_Rectangle
when you know the instance is a rectangle by virtue of it being of the rectangle class?