Rola metod statycznych została wyjaśniona w poprzenim punkcie. Dodatkowego wyjaśnienia wymagają jednak pola statyczne.
Pola statyczne są wspólne dla wszystkich obiektów danej klasy. Niemniej jednak, jak wynika z pełnej hermetyzacji, nie możemy deklarować ich jako publicznych. Poniższy opis przedstawia implementację prywatnej zmiennej statycznej, uzupełnionej o getter, zrealizowany jako metodę klasy.
W pliku nagłówkowym:
class Instrument
{
static int count;
public:
static int getCount();
};
W pliku z implementacją:
int Instrument::count = 0;
int Instrument::getCount()
{
return count;
}
W Objective-C, w interfejsie nie wykazujemy w ogóle istnienia zmiennej statycznej. Zamieszczamy tam tylko deklarację metody klasy. W Objective-C rozpoczynamy je od znaku +
.
@interface Instrument : NSObject
+ (int) count;
@end
Zmienną statyczną deklarujemy i inicjalizujemy w pliku z implementacją.
@implementation Instrument
static int count = 0;
+ (int) count
{
return count;
}
@end
public class Instrument
{
private static int count = 0;
public static int getCount()
{
return count;
}
}
W C# taka konstrukcja wygląda podobnie jak w C++. Jedyną większą różnicą jest inicjalizacja zmiennej w miejscu deklaracji.
class Instrument
{
protected static int count = 0;
public static int getCount()
{
return count;
}
}
Zmienne statyczne w Ruby deklarujemy prefiksem @@
. Nazwy metod statycznych muszą rozpoczynać się od self.
.
class Instrument
@@count = 0
def self.count
@@count
end
end