Co to jest nadrzędne metody?

Zastępowanie metody jest stosowane w programowaniu zorientowanym na obiekt w hierarchii dziedziczenia i występuje, gdy metoda zdefiniowana w nadklasie jest na nowo zdefiniowana w podklasie. Zwykle metoda podklasy robi coś innego niż metoda superklasy lub rozszerza się na możliwości nadklasy, ale tak nie jest. Zastępowanie metody występuje, gdy metoda nadklasy jest na nowo zdefiniowana w podklasie, niezależnie od zawartości na nowo zdefiniowanej metodzie. Zdefiniowane sygnatury metody muszą być dokładnie takie same. Na przykład

klasa A może zawierać metodę o nazwie „Dosomething”, a ta metoda nie ma parametrów wejściowych. Ponadto klasy B i C mogą być podklasami klasy A. Klasa B mogą zawierać metodę o nazwie „Dosomething”, która nie przyjmuje parametrów wejściowych, a klasa C może zawierać metodę „BEZOMOTHE”, która przyjmuje liczbę jako parametr wejściowy. W tym przykładzie tylko klasa B wykazywałaby nadrzędność metody, ponieważ jej metoda „Dosomething” ma ten sam japodpis thod jako nadklasa, klasa A. Metoda „Dosomething” w klasie C, z drugiej strony, pokazuje przeciążenie metody, ponieważ tworzy zupełnie nową metodę.

Wirtualne dziedziczenie w C ++ jest kolejnym przykładem zastępowania metody. Metody wirtualne w nadklasach mogą być wdrażane, ale żadna ich podklasa definicja jest przykładem zastępowania metody. Gdy metoda jest zastąpiona w podklasie, metoda nadklasy nie jest wywoływana, chyba że jest ona wyraźnie wywoływana. Często mówi się, że ten konkretny sposób wywołania zastąpionej metody „ukrywa” implementację nadklasy.

Chociaż nadrzędne metody jest bardzo elastyczne, nie wszystkie metody można zastąpić i zdarza się, że ta sztywność może być preferowana. Zarówno w Java, jak i C ++ można zastosować określone słowa kluczowe w podpisach metody, aby zapobiec zastąpieniu metody w podklasie. Aby to zrobić, Javaużywa słowa kluczowego „Ostateczne”, a C ++ używa słowa kluczowego „const”. Zapobieganie zastępowaniu metody może być korzystne, jeśli dana funkcja powinna być zawsze niezmieniona w całym drzewie dziedzictwu.

Ogólnie

Ogólnie rzecz biorąc, proste metody, które otrzymują małe fragmenty danych, nie należy zastąpić. Przypadki, które zwykle korzystają z nadmiernego nadrzędnego, mają miejsce, gdy podklasa ma na celu dodanie funkcjonalności metody nadklasy bez tworzenia zupełnie nowej metody. Niezwykłe przypadki, w których metoda musi zostać całkowicie przerobiona dla jednego konkretnego rodzaju obiektu, mogą również skorzystać z tej techniki. Ilekroć metoda jest zastąpiona, ważne jest, aby programista odpowiednio komentował zarówno metody nadklasy, jak i podklasy. Idealnie, komentarze te powinny wyjaśnić, co robi każdy wariant metody, a także jak i dlaczego się różnią.

INNE JĘZYKI