Odwołanie do obiektu z metody

0

Witam

Mam bardzo prosty problem (choć nie dla mnie) w funkcji main tworzę obiekt następnie na jego rzecz wywołuje metodę , co zrobić żeby abym mógł z tej metody posługiwać się tym obiektem przy czym ta metoda musi być bezparametrowa.

A dokładnie muszę rozszerzyć klasę File o metodę która rekursywnie wyświetli listę plików i katalogów...ale problem mam z posłużeniem się moim obiektem.

Pozdrawiam i dziękuje za pomoc

0

W metodzie odwolujesz sie do obiektu na rzecz ktorego wywolana jest metoda za pomoca slowa kluczowego this.
File nie mozna rozszerzyc, jest final.

0
microbiusz napisał(a)

Mam bardzo prosty problem (choć nie dla mnie) w funkcji main tworzę obiekt

Jakiej klasy?

następnie na jego rzecz wywołuje metodę, co zrobić żeby abym mógł z tej metody posługiwać się tym obiektem przy czym ta metoda musi być bezparametrowa.

Każdy obiekt posiada niejawną zmienną this, która jest referencją do obiektu, na rzecz którego jest wywoływana metoda.

A dokładnie muszę rozszerzyć klasę File o metodę która rekursywnie wyświetli listę plików i katalogów

To może nie być najlepszy pomysł choćby z tego powodu, że wbrew mylącej nazwie klasa File nie reprezentuje pliku.
File w Javie reprezentuje nazwę, ale nawet nie pliku, jest to (ściśle mówiąc) nazwa pozycji katalogowej. A ta może być zarówno plikiem jak i katalogiem (po to są metody isFile i isDirectory).

Oczywiście możesz to olać i zwyczajnie utworzyć klasę dziedziczącą z File, albo po prostu klasę, która będzie trzymała jakiś obiekt File jako swoje prywatne pole. W obu wypadkach możesz zaimplementować metodę, która to zrobi. W pierwszym wypadku do obiektu File dostaniesz się poprzez this, a w drugim poprzez swoje konkretnie nazwane pole (lub metodę gettera, który poda ten obiekt).

0

Poprawka, nie jest final, mozna dziedziczyc ;d

0

Każdy obiekt posiada niejawną zmienną this, która jest referencją do obiektu, na rzecz którego jest wywoływana metoda.

Nie. Obiekt nie posiada referencji na siebie. Zresztą byłoby to bez sensu. This jest przekazywany z miejsca wywołania metody, tzn konstrukcja typu: obiekt.metoda(parametry) jest w zasadzie równoważna (tzn ideologicznie) konstrukcji: metoda(obiekt, parametry). Inaczej mówiąc, this jest zmienną która leży sobie na stosie, wepchnięta tam w metodzie, która wywołała obecną metodę, a nie jest zmienną leżącą w obiekcie na stercie, tak jak ty napisałeś.

0

Dokladnie.
Tak to zreszta wyglada np w winapi, gdzie pierwszym parametrem zawze bylo jakies HINSTANCE czy cos - wskaznik na instancje okienka na ktorym sie operuje.
Metody w pythonie pierwszy parametr ustawiaja zawsze na 'this' (tam utarlo sie nazywac to 'self', ale mozna uzyc jakiej nazwy sie chce), co zreszta uwazam za porabany pomysl w ogolnie swietnym jezyku.

0

Nie HINSTANCE tylko HWND... jak zwal tak zwal ;d

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