Co robi ta metoda ?

Co robi ta metoda ?
ID
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
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++ ?

Skoq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 255
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

ID
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
0

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

Wibowit
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: XML Hills
0

Kod w Javie:

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

Kod w C++:

Kopiuj
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ć):

Kopiuj
public: virtual void metoda()
{
metoda(0);
}
MI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 85
0

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

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
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

S9
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 3573
0

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

ID
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 18
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.

Belka
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: PL
  • Postów: 452
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.