oop
Wielopostaciowość
Szukaj…
Wprowadzenie
Polimorfizm jest jedną z podstawowych koncepcji OOP (Object Oriented Programming) . Główną ideą polimorfizmu jest to, że obiekt może przyjmować różne formy. Aby to osiągnąć (polimorfizm), mamy dwa główne podejścia.
Przeciążenie metody
- Występuje, gdy istnieją dwie lub więcej metod o tej samej nazwie i różnych parametrach wejściowych. Typ zwracany powinien być taki sam dla wszystkich metod o tej samej nazwie
Przesłanianie metody
- Występuje, gdy obiekt podrzędny używa tej samej definicji metody (ta sama nazwa z tymi samymi parametrami), ale ma różne implementacje.
Korzystając z tych dwóch podejść, możemy zastosować tę samą metodę / funkcję, aby zachowywać się inaczej. Zobaczmy więcej szczegółów na ten temat w poniższych przykładach.
Przeciążenie metody
Przeciążanie metod to sposób na wykorzystanie polimorfizmu w klasie. Możemy mieć dwie lub więcej metod w tej samej klasie, z różnymi parametrami wejściowymi.
Różnica parametrów wejściowych może być:
- Liczba parametrów
- Rodzaj parametrów (typ danych)
- Kolejność parametrów
Spójrzmy na nie osobno (te przykłady w Javie, ponieważ jestem bardziej zaznajomiony z tym - przepraszam za to):
Liczba parametrów
public class Mathematics { public int add (int a, int b) { return (a + b); } public int add (int a, int b, int c) { return (a + b + c); } public int add (int a, int b, int c, int c) { return (a + b + c + d); } }Przyjrzyj się uważnie, widać, że typ zwracany przez metodę jest taki sam -
int, ale liczba tych metod ma różną liczbę danych wejściowych. Nazywa się to metodą ładowania z różną liczbą parametrów.PS: To tylko przykład , nie ma potrzeby definiowania takich funkcji dodawania.
Rodzaj parametrów
public class Mathematics { public void display (int a) { System.out.println("" + a); } public void display (double a) { System.out.println("" + a); } public void display (float a) { System.out.println("" + a); } }Zauważ, że każda metoda ma tę samą nazwę i ten sam typ zwrotu, podczas gdy mają różne typy danych wejściowych.
PS: Ten przykład służy wyłącznie do wyjaśnienia celu.
Kolejność parametrów
public class Mathematics { public void display (int a, double b) { System.out.println("Numbers are " + a + " and " + b); } public void display (double a, int b) { System.out.println("Numbers are " + a + " and " + b); } }PS: Ten przykład służy również wyłącznie wyjaśnieniu celu.
Metoda przesłonięcia
Zastępowanie metod to sposób na zastosowanie polimorfizmu między klasami. jeśli jedna klasa zostanie odziedziczona od drugiej, pierwsza (podklasa) może zastąpić metody drugiej (superklasy) i zmienić implementację.
jest to stosowane tam, gdzie superklasa definiuje bardziej ogólną implementację metody, podczas gdy podklasa używa bardziej specyficznej.
Rozważ następujący przykład:
Mamy klasę dla ssaków:
class Mammal {
void whoIam () {
System.out.println("I am a Mammal");
}
}
Następnie mamy klasę dla psa, czyli ssaka:
class Dog extends Mammal {
@Override
void whoIam () {
super.whoIam();
System.out.println("I am a Dog!");
}
}
W tym przykładzie definiujemy whoIam() w klasie Mammal , gdzie ssak mówi, że jest to Mammal. Ale to jest ogólny termin, ponieważ istnieje wiele ssaków. Następnie możemy odziedziczyć klasę Dog od klasy Mammal , ponieważ pies jest ssakiem. Mówiąc ściślej, Pies to zarówno Pies, jak i Ssak. Dlatego pies powinien powiedzieć I am a Mammal a także I am a Dog . Stąd możemy Zastąpić whoIam() metoda w klasie Super ( Mammal klasy, to znaczy) z klasy sub (The Dog klasy).
Możemy również wywołać metodę super.whoIam() za pomocą super.whoIam() w Javie. Wtedy Dog będzie się zachowywał jak Pies, a jednocześnie zachowa się jak Ssak.