Skip to main content

Co to jest nadrzędne metody?

Zastępowanie metody jest stosowane w programowaniu obiektowym 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 nadklasy 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.Zredefiniowane 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 wymaga parametrów wejściowych, a klasa C może zawierać metodę, która przyjmuje liczbę jako parametr wejściowy.W tym przykładzie tylko klasa B wykazywałaby nadrzędność metody, ponieważ jej metoda dawkowania ma tę samą metodę, co jej nadklasa, klasa A. Z drugiej strony metoda 2..

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ż nadmierne nastawienie 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ć, Java używa ostatecznego słowa kluczowego, a C ++ używa słowa kluczowego Const.Zapobieganie zastępowaniu metody może być korzystne, jeśli konkretna funkcja powinna być zawsze niezmieniona w całym drzewie dziedzictwu.

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, te komentarze powinny wyjaśnić, co robi każdy wariant metody, a także jak i dlaczego się różnią.