Wprowadzenie do słowa kluczowego this
Słowo kluczowe this odnosi się do obiektu, w kontekście którego wywoływana jest dana metoda. W języku Smalltalk zamiast this używa się self. W zależności od języka programowania, this może być interpretowane jako:
- wskaznik (C++)
- referencja (Java, C#)
- zmienna (PHP)
Użycie this
Istnieją sytuacje, w których użycie this jest niezbędne:
- Zwracanie referencji obiektu: Przykład w C++:
class Wektor { public: Wektor& operator=(const Wektor& wzorzec) { x = wzorzec.x; y = wzorzec.y; return *this; // zwrócenie referencji } private: double x; double y; };
- Rozróżnienie zmiennych: Przykład w Javie:
class Wektor { private double x; private double y; public Wektor(double x, double y) { this.x = x; // rozróżnienie parametrów this.y = y; } };
- Wywołanie innego konstruktora: Przykład w Javie:
class Person { private String name; private Date dateOfBirth; public Person(String name) { this(name, new Date()); // Wywołanie innego konstruktora } public Person(String name, Date dateOfBirth) { this.name = name; this.dateOfBirth = dateOfBirth; } };
Konwencja nazewnicza związana z this
Popularnym sposobem na wyróżnienie pól klasy od zmiennych lokalnych jest użycie przedrostka „m_” (od angielskiego member). Alternatywnie, można używać this, co pozwala na stosowanie bardziej intuicyjnych nazw, takich jak date
czy name
, z odpowiednim użyciem: this.date
i this.name
.
Samobójstwo obiektu w C++
W C++ this jest wskaźnikiem, co umożliwia obiektowi „popełnienie samobójstwa” poprzez wywołanie delete this;
w ramach metody. Przykład:
class Samobojca { private int dana; public void zabijSie() { dana = 1; // ok delete this; // obiekt przestaje istnieć } };
Warto pamiętać, że mechanizm ten powinien być stosowany ostrożnie, gdyż używanie go może świadczyć o błędach w koncepcji programu.