Podstawy popularnych języków programowania obiektowego

Metody i pola statyczne—metody i pola klasy

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.

C++

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;
}

Objective C

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

Java

public class Instrument
{
    private static int count = 0;

    public static int getCount()
    {
        return count;
    }
}

C#

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;
    }
}

Ruby

Zmienne statyczne w Ruby deklarujemy prefiksem @@. Nazwy metod statycznych muszą rozpoczynać się od self..

class Instrument
    @@count = 0
    def self.count
        @@count
    end
end