Ricerca…
introduzione
Il polimorfismo è uno dei concetti di base in OOP (Object Oriented Programming) . L'idea principale del polimorfismo è che un oggetto ha la capacità di assumere forme diverse. Per ottenere ciò (polimorfismo), abbiamo due approcci principali.
Sovraccarico di metodi
- Si verifica quando esistono due o più metodi con lo stesso nome, con parametri di input diversi. Il tipo restituito dovrebbe essere lo stesso per tutti i metodi con lo stesso nome
Metodo prioritario
- Si verifica quando l'oggetto figlio utilizza la stessa definizione di metodo (stesso nome con gli stessi parametri), ma ha implementazioni diverse.
Usando questi due approcci possiamo usare lo stesso metodo / funzione per comportarci diversamente. Vediamo più dettagli su questo nei seguenti esempi.
Sovraccarico del metodo
L'overloading del metodo è il modo di utilizzare il polimorfismo all'interno di una classe. Possiamo avere due o più metodi all'interno della stessa classe, con diversi parametri di input.
La differenza tra i parametri di input può essere:
- Numero di parametri
- Tipo di parametri (tipo di dati)
- Ordine dei parametri
Diamo un'occhiata a loro separatamente (Questi esempi in Java, come io sono più familiarità con esso - Ci scusiamo per questo):
Numero di parametri
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); } }Osserva attentamente, puoi vedere che il metodo restituito dal metodo è lo stesso -
int, ma questi metodi hanno un numero diverso di input. Questo è chiamato come metodo sul caricamento con un numero diverso di parametri.PS: questo è solo un esempio , non è necessario definire funzioni di aggiunta come questa.
Tipo di parametri
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); } }Nota che ogni metodo ha lo stesso nome e lo stesso tipo di ritorno, mentre hanno diversi tipi di dati di input.
PS: questo esempio serve solo a spiegare lo scopo.
Ordine dei parametri
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: questo esempio serve anche a spiegare lo scopo.
Metodo Overriding
L'override del metodo è il modo di utilizzare il polimorfismo tra le classi. se una classe è ereditata da un'altra, la prima (sottoclasse) può sovrascrivere i metodi di quest'ultima (super-classe) e modificare l'implementazione.
questo è usato dove la super classe definisce l'implementazione più generale del metodo mentre la sottoclasse usa uno più specifico.
Considera il seguente esempio:
Abbiamo una classe per i mammiferi:
class Mammal {
void whoIam () {
System.out.println("I am a Mammal");
}
}
Poi abbiamo una classe per Cane, che è un Mammifero:
class Dog extends Mammal {
@Override
void whoIam () {
super.whoIam();
System.out.println("I am a Dog!");
}
}
In questo esempio, definiamo il metodo whoIam() nella classe Mammal , dove il mammifero dice che è un Mammifero. Ma questo è un termine generale, dato che ci sono molti mammiferi là fuori. Quindi possiamo ereditare la classe Dog dalla classe dei Mammal , come Dog is a Mammal. Ma, per essere più specifici, Dog is a Dog e a Mammal. Quindi, Dog dovrebbe dire, I am a Mammal e anche I am a Dog . Quindi possiamo sovrascrivere il metodo whoIam() in super classe (classe Mammal , cioè) dalla sub class (la classe Dog ).
Possiamo anche chiamare il metodo della super-classe usando super.whoIam() in Java. Quindi, il Dog si comporta come un cane, mentre si comporta anche come un mammifero.