Co to jest anonimowa klasa wewnętrzna?

W obiektowym programowaniu komputerowym anonimowa klasa wewnętrzna to klasa zadeklarowana w metodzie, ale nienazwana. Anonimowa klasa wewnętrzna ma kilka ograniczeń, które odróżniają ją od zwykłej klasy, w tym ograniczenie zakresu zmiennych, do których ma dostęp. Istnieją pewne bardzo specyficzne sytuacje, w których użycie anonimowej klasy wewnętrznej może sprawić, że kod źródłowy będzie bardziej czytelny, ale jest on przede wszystkim używany w celu wymuszenia enkapsulacji tam, gdzie generowanie oddzielnych klas może to skomplikować.

Hermetyzacja jest pojęciem w programowaniu obiektowym (OOP), że obiekt i jego komponenty powinny być w jakiś sposób chronione i powiązane z obiektem. Anonimowe klasy wewnętrzne i ogólnie klasy wewnętrzne pomagają zrealizować enkapsulację szczególnie złożonych obiektów. Zamiast tworzyć klasę, która opiera się na oddzielnej klasie zewnętrznej, łącząc je ze sobą sztucznie i potencjalnie odsłaniając niektóre komponenty, anonimowa klasa wewnętrzna może solidnie powiązać te dwie klasy.

W niektórych językach programowania anonimowa klasa wewnętrzna może pomóc pokonać ograniczenia pojedynczego dziedziczenia. Jeśli obiekt dziedziczy z jednej klasy, ale następnie musi uzyskać dostęp do innej, klasa wewnętrzna może być generowana w locie, a następnie przekazywana do odpowiednich procedur obsługi. Ta technika jest powszechna w przypadku wywołań zwrotnych i detektorów zdarzeń. Jedyną alternatywą byłoby utworzenie całej drugiej klasy, w której tylko jedna lub dwie metody zostaną zastąpione.

Anonimowe klasy wewnętrzne mają pewne ograniczenia, aby zapobiec zerwaniu enkapsulacji i wymusić zakres. Podstawowym ograniczeniem jest to, że anonimowa klasa wewnętrzna nie może uzyskać dostępu do zmiennych metody, w której się znajduje, chyba że zmienne te zostaną zadeklarowane jako ostateczne. Wynika to z faktu, że klasa wewnętrzna może dalej funkcjonować poza życiem klasy i metody, w której się zagnieżdża. Zmienne klasy owijającej zostaną zniszczone po zakończeniu jej życia, więc odniesienia, które posiada klasa wewnętrzna, staną się natychmiast nieważne. Jedynym wyjątkiem od tego jest zmienna końcowa, ponieważ będzie istnieć poza instancją.

Jednym z bardziej konkretnych zastosowań anonimowej klasy wewnętrznej jest ochrona kodu. Wiele języków OOP zapewnia mechanizm zwany refleksją. Odbicie pozwala programowi rozdzielić inną klasę i zobaczyć, jakie są jej zmienne składowe i metody, ale nie sam kod. Używając anonimowej klasy wewnętrznej, zawartość klasy wewnętrznej jest chroniona przed odbiciem, a wewnętrzne funkcjonowanie większej klasy można skutecznie ukryć.

INNE JĘZYKI

Czy ten artykuł był pomocny? Dzięki za opinie Dzięki za opinie

Jak możemy pomóc? Jak możemy pomóc?