Przerabiam właśnie lekcję kursu:
http://javastart.pl/static/programowanie-obiektowe/parametry-i-slowo-kluczowe-this/
i jakoś nie do końca rozumiem do czego służy te słówko this
Czy może mi ktoś wytłumaczyć kiedy i w jakim celu się je stosuje??
Przerabiam właśnie lekcję kursu:
http://javastart.pl/static/programowanie-obiektowe/parametry-i-slowo-kluczowe-this/
i jakoś nie do końca rozumiem do czego służy te słówko this
Czy może mi ktoś wytłumaczyć kiedy i w jakim celu się je stosuje??
this
odnosi się do instancji obiektu, na którym wywołujesz metodę.
void MojaKlasa::foo() {
wyświetl(this->poleKlasy);
}
int main() {
MojaKlasa a, b;
a->foo(); // w tym momencie wewnątrz metody `this` będzie się odnosiło do instancji `a`
b->foo(); // a tutaj do `b`
}
To słowo kluczowe stosuje się, gdy chcesz odnieść się do pola klasy wewnątrz jej metody lub wywołać metodę z samej siebie:
void MojaKlasa::foo() {
this->bar();
}
W 50% przypadków - do zaśmiecania kodu np: void fun(int param) { this->value=param; }
oraz inne dziwactwa
W 40% przypadków - do ogarnięcia kolizji nazw np: void fun(int value) { this->value=value; }
W 7% wypadków - do przekazania siebie samej (klasy) do innych metod
W 3% wypadków - do zwrócenia siebie samej (klasy) np: klasa fun() { /* tu coś robimy */ return this; }
Uwaga procenty bardzo subiektywne.
Klasa Point z polami x,y
public Point(int x, int y)
{
this.x = x;
this.y = y;
}
public Point()
{
this(0,0);
}
public class Ahoj extends JFrame
{
JTextField msg;
...
public Ahoj()
{
JButton b = new JButton("Kliknij mnie");
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
Ahoj.this.msg.setText("A hoj");
}
});
}
}