Co robi ta metoda ?

0

Dzień dobry,
Co właściwie robi taka metoda ?

public void metoda()
{
metoda(0);
}

Staram się zrozumieć klasę w Javie. Natrafiłem w niej na taką metodę i właściwie nie wiem co ona robi.
Niczego nie przyjmuje, nic nie zwraca. Jaki byłby jej odpowiednik w C++ ?

1

Wywołuje inną metodę, która za parametr przyjmuje jakąś wartość liczbową, ale co tamta metoda robi to uj wie bo dałeś tyle info co kot napłakał :D

0

Dziękuję za odpowiedź, coś mi to rozjaśniło.
Nie mogę wrzucić tu niestety całej tej klasy.

0

Kod w Javie:

public void metoda()
{
metoda(0);
}

Kod w C++:

public: void metoda()
{
metoda(0);
}

lub (w zależności od sposobu używania dziedziczenia, bo w Javce wszystkie nadpisywalne metody są wirtualne, więc tam virtual nie trzeba dopisywać):

public: virtual void metoda()
{
metoda(0);
}
0

To jest tzw. rekurencja kiedy metoda wywołuje samą siebie. W takim wypadku działa po prostu jak pętla nieskończona.

1
Mirai napisał(a):

To jest tzw. rekurencja kiedy metoda wywołuje samą siebie. W takim wypadku działa po prostu jak pętla nieskończona.

Dokładnie tak. Metoda która nie przyjmuje argumentu wywołuje samą siebie z argumentem :D

0

@Mirai: chyba nie bardzo, bo metoda wywolująca jest bez parapemetrowa.

0

To nie rekurencja. Ta metoda nie uruchamia samej siebie tylko kolejną metodę.

Zrozumiałem już jak to działa. Ta metoda:

public void metoda()
{
metoda(0);
}

tak jak napisał Skoq uruchamia mi kolejną metoda(int i), ale ta jest już z parametrem i.
Tam dzieją się już konkretniejsze rzeczy.

@Wibowit

Rzeczywiście w C++ to zaskoczyło i działa bez virtual. Kompilator nie ma problemu.

2

To jest imitacja opcjonalnych argumentów metody w Javie. Wywołujesz metodę, która przyjmuje parametr z jakimś defaultowym parametrem i dzięki temu nie musisz tego argumentu jawnie podawać, tylko wywołujesz wariant metody bez parametru.

1 użytkowników online, w tym zalogowanych: 0, gości: 1