Sobes.tech
Junior

Cosa si può modificare durante il sovraccarico dei metodi in programmazione?

sobes.tech AI

Risposta dell'AI

Nel sovraccarico di metodi (method overloading) è possibile modificare:

  • Numero di parametri: I metodi con lo stesso nome possono avere un numero diverso di parametri formali.
  • Tipi di parametri: I metodi con lo stesso nome e lo stesso numero di parametri possono differire nei tipi di questi parametri.
  • Ordine dei tipi di parametri: Se i metodi hanno lo stesso numero di parametri e gli stessi tipi, ma in ordine diverso, si considera comunque sovraccarico.

Esempio in Java:

// Classe con metodi sovraccaricati
class Calculator {

    // Metodo di somma di due numeri interi
    public int add(int a, int b) {
        return a + b;
    }

    // Metodo sovraccaricato: somma di tre numeri interi
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // Metodo sovraccaricato: somma di due numeri con virgola mobile
    public double add(double a, double b) {
        return a + b;
    }

    // Metodo sovraccaricato: somma di un intero e un numero con virgola mobile
    public double add(int a, double b) {
        return a + b;
    }

    // Metodo sovraccaricato: somma di un numero con virgola mobile e un intero
    public double add(double a, int b) {
        return a + b;
    }
}

Cosa non si può modificare nella sovraccarico di metodi:

  • Tipo di ritorno: Due metodi con lo stesso nome e la stessa firma (numero, tipi e ordine dei parametri) non possono differire solo per il tipo di ritorno.
  • Modificatori di accesso: I modificatori di accesso (public, private, protected, default) non influenzano la sovraccarico.
  • Presenza o assenza della parola chiave static: Non si può sovraccaricare un metodo statico definendo un metodo non statico con la stessa firma, o viceversa.
  • Lista delle eccezioni lanciate dal metodo: La lista delle eccezioni non fa parte della firma del metodo, e il compilatore non la usa per distinguere i metodi sovraccaricati.

Confronto tra sovraccarico e overriding di metodi:

Caratteristica Sovraccarico (Overloading) Overriding (Sovrascrittura)
Dove avviene In una stessa classe o in una gerarchia di classi Nella classe figlia
Nome del metodo Uguale Uguale
Firma del metodo Diversa (numero, tipi, ordine dei parametri) Uguale
Tipo di ritorno Può essere diverso (ma non l'unica differenza) Deve essere uguale o covariante (per oggetti)
Scopo Fornire diverse varianti di un'azione per diversi tipi di dati o quantità di argomenti Modificare il comportamento del metodo ereditato nella classe figlia
Relazione tra metodi Metodi indipendenti Relazione di "è un" (ereditarietà)
Polimorfismo Polimorfismo in fase di compilazione (statico) Polimorfismo in fase di esecuzione (dinamico)