Język C++ wprowadza pojęcia metod publicznych i statycznych. Rozróżnienie to jest jednak nieintuicyjne i znacznie łatwiej zrozumieć różnice między nimi, jeśli, jak w Ruby czy Objective-C, nazwiemy je metodami klasy i obiektu.
Metody publiczne są metodami obiektów. Każdy z obiektów posiada ich osobną instancję, a wewnątrz ich implementacji mamy dostęp do wszystkich pól obiektu.
Metody statyczne są metodami klasy. Są one wspólne dla wszystkich obiektów danej klasy, a wewnątrz ich implementacji mamy dostęp jedynie do zmiennych statycznych.
W sekcji public
pliku nagłówkowego umieszczamy prototypy funkcji.
class Instrument
{
public:
string getSound();
string getType();
};
W pliku z implementacją, definiujemy ciała dla prototypów, pamiętając o właściwym wskazaniu przestrzeni nazw (Instrument::
przed nazwą funkcji).
string Instrument::getSound()
{
return "The sound of an instrument" << endl;
}
string Instrument::getType()
{
return "Unknown";
}
Prototyp metody w Objective-C różni się odrobinę od tego z C. Rozpoczyna się on od znaku -
lub +
, później w nawiasie określa typ zwracany, a za nim nazwę metody. Dokładniejszy opis nazwy zawiera się w opisie składni Objective-C.
Metody obiektu w Objective-C rozpoczynamy od znaku -
.
W pliku z interfejsem:
@interface Instrument : NSObject
- (NSString *) sound;
- (NSString *) type;
@end
W pliku z implementacją:
- (NSString *) sound
{
@"The sound of an instrument";
}
- (NSString *) type
{
return nil;
}
public class Instrument
{
public String getSound()
{
return "The sound of an instrument";
}
public String getType()
{
return "Unknown";
}
}
Deklaracje metod publicznych w C# są zbliżone do tych z C++.
class Instrument
{
public string getSound()
{
return "The sound of an instrument";
}
public virtual string getType()
{
return "Unknown";
}
}
W Ruby nie deklarujemy typu zwracanego przez metodę. Dokładniejszy opis deklaracji metod zawiera się w opisie składni Ruby.
class Instrument
def sound
"The sound of an instrument"
end
def type
"Unknown"
end
end