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.

  1. 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
  2. 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):

  1. 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.

  1. 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.

  1. 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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow