Reguły programisty

Java

Przesłanianie i przeciążanie w Java

Zebrane w sposób zwięzły reguły przesłaniania i przeciążąnia w Java

Javajob interviewOCA

Podstawowe zasady:

- Metody (oprócz konstruktorów) mogą być przesłaniane lub przeciążane;

- Konstruktory mogą być tylko przeciążane;

- Metody abstrakcyjne muszą być przesłonięte przez pierwszą niabstrakcyjną podklasę klasy abstrakcyjnej;

- W stosunku do metody, która jest przesłaniana, dana metoda:

  * musi mieć taką samą listę argumentów;

  * musi zwracać ten sam typ. Zwracany typ może być podklasą - nosi to nazwę covariant return;

  * nie może mieć bardziej restrykcyjnego modyfikatora dostępu;

  * może mieć mniej restrykcyjny modyfikator dostępu;

  * nie może wyrzucać nowego lub szerszego wyjątku typu checked;

  * może wyrzucać mniej lub ograniczone wyjątki typu checked lub może wyrzucać dowolny wyjątek typu unchecked;

- nie można przesłaniać metod oznaczonych jako final;

- można przesłaniać tylko metody dziedziczone. Tu należy przypomnieć, żemetody prywatne nie są dziedziczone;

- w podklasie można użyć konstrukcji super.metoda(), aby wywołać zdefiniowaną w klasie nadrzędnej wersję metody;

- przeciążanie oznacza ponowne użycie danej metody, ale z innymi argumentami;

- metody przeciążane:

* muszą mieć różną listę argumentów;

* mogą zwracać inne typy, jeżeli lista argumentów jest również inna;

* mogą mieć inne modyfikatory dostępu;

* mogą wyrzucać inne wyjątki;

- metody z klasy nadrzędnej mogą być przeciążane w klasie podrzędnej;

- polimorfizm oznacza przesłanianie a nie przeciążanie;

- o tym, która wersja przesłoniętej metody jest używana w czasie runtime decyduje typ obiektu;

- w czasie kompilacji jest decydowane, która przeciążona metoda będzie wykorzystana na podstawie referencji;
Tutorial statistics