Polimorfismo in Java: come sovraccaricare o sovrascrivere i metodi

Polimorfismo in Java: come sovraccaricare o sovrascrivere i metodi

L'override e l'override del metodo sono i due modi in cui Java dimostra il polimorfismo. Il polimorfismo deriva da una combinazione di due parole greche: 'poli' che significa molti e 'morfo' che significa forma. Pertanto, il polimorfismo consente ai metodi di assumere molte forme.





Segui questa guida per imparare come sovraccaricare o sovrascrivere i metodi in Java.





Che cos'è il sovraccarico del metodo?

'Sovraccarico del metodo' si riferisce alla definizione di metodi diversi in una classe con lo stesso nome. I metodi devono avere firme diverse. Una firma del metodo è la combinazione del nome di un metodo e dell'elenco dei parametri. Non include il tipo restituito.





Il compilatore sa quale metodo utilizzare controllando il tipo, il numero di parametri e l'ordine in cui sono posizionati.

Imparentato: Esplorazione dell'ereditarietà nel linguaggio di programmazione Java



L'overload del metodo dimostra il polimorfismo in fase di compilazione. Il polimorfismo in fase di compilazione significa che il compilatore Java associa un oggetto alla sua funzionalità in fase di esecuzione. Il compilatore controlla le firme del metodo per ottenere ciò.

Questo tipo di polimorfismo è anche noto come legame statico o precoce.





Vedere l'esempio di sovraccarico del metodo di seguito:

class Arithmetic{
int cube(int x){
return x*x*x;
}
double cube(double x){
return x*x*x;
}
float cube(float x){
return x*x*x;
}
public static void main(String[] args){
Arithmetic myMultiplication = new Arithmetic();
System.out.println('The cube of 5 is ' + myMultiplication.cube(5));
System.out.println('The cube of 5.0 is ' + myMultiplication.cube(5.0));
System.out.println('The cube of 0.5 is ' + myMultiplication.cube(0.5));
}
}

Produzione:





The cube of 5 is 125
The cube of 5.0 is 125.0
The cube of 0.5 is 0.125

Il codice sopra mostra come puoi ottenere un cubo di diversi tipi ( int , Doppio , galleggiante ) utilizzando lo stesso metodo.

In genere, l'overload del metodo viene utilizzato per definire metodi simili con tipi di parametri diversi.

Che cos'è l'override del metodo?

Questo si riferisce a una diversa implementazione di un metodo in una sottoclasse. Il metodo deve essere già stato definito nella classe genitore.

Il metodo di override (cioè quello nella sottoclasse) deve avere la stessa firma del metodo di quello nella superclasse. Il tipo restituito dal metodo di override può essere lo stesso o un sottotipo di quello nella superclasse.

L'override viene generalmente utilizzato per includere un'implementazione specifica del comportamento di un oggetto nella sottoclasse.

class Account{
public void message() {
System.out.println('
Thank you for opening an account with us!');
}
public static void main(String args[]) {
Account myAccount = new Account();
Savings mySavings = new Savings();
FixedDeposit myFixedDepo = new FixedDeposit();
myAccount.message();
mySavings.message();
myFixedDepo.message();
}
}
class Savings extends Account {
public void message() {
System.out.println('
Thank you for opening a Savings account with us!');
}
}
class FixedDeposit extends Account {
public void message() {
System.out.println('
Thank you for opening a Fixed Deposit account with us!');
}
}

Produzione:

Thank you for opening an account with us!
Thank you for opening a Savings account with us!
Thank you for opening a Fixed Deposit account with us!

L'esempio sopra mostra come il metodo Messaggio() viene sovrascritto nelle sottoclassi risparmio e Deposito fisso . Verranno visualizzati messaggi diversi per i titolari di conto corrente bancario con un conto di risparmio e quelli con un conto deposito fisso.

Imparentato: Cosa devi sapere sull'utilizzo delle stringhe in Java

Vale anche la pena notare che l'override del metodo dimostra il polimorfismo di runtime o l'invio dinamico del metodo. Ciò significa che il metodo da chiamare viene risolto in fase di esecuzione anziché in fase di compilazione.

Per evitare che un metodo venga sovrascritto, usa la parola chiave finale .

final void message (){
System.out.println('
Thank you for opening an account with us!');
}

Quando una sottoclasse tenta di sovrascriverla, si verificherà un errore di compilazione.

Idealmente, tutti i metodi chiamati all'interno di un costruttore dovrebbero essere finale . Questo per evitare modifiche indesiderate che potrebbero essere causate dalle sottoclassi.

A volte, potrebbe essere necessario accedere a un metodo sovrascritto all'interno del metodo sovraordinato. Puoi usare la parola chiave super seguito dall'operatore punto ( . ) e il nome del metodo in tal caso.

Considera la superclasse Animale .

class Animal{
public void move() {
System.out.println('
I can move.');
}
}

Di seguito c'è una sottoclasse, chiamata Pesce , che sovrascrive spostare() :

class Fish extends Animal {
public void move() {
System.out.println('
I can swim.');
super.move();
}
public static void main(String args[]){
Fish Tilapia = new Fish();
Tilapia.move();
}
}

Produzione:

come hackerare un conto bancario senza software
I can swim.
I can move.

Quando si esegue l'override di un metodo, è inoltre necessario essere consapevoli del modificatore di accesso utilizzato. Il modificatore nella sottoclasse dovrebbe avere lo stesso livello di visibilità o maggiore rispetto alla classe base. Ad esempio, se il metodo nella classe base è definito come protetto , allora il metodo di override può essere protetto o pubblico .

Codice semplice con polimorfismo

L'override e l'overload del metodo sono importanti per la semplificazione del codice e il codice semplice è una buona pratica.

Come mai? Immagina una base di codice complessa con più dettagli rispetto alla Grand Central Station. Ora immagina che un insetto devastante inizi a distruggere il tuo duro lavoro davanti ai tuoi occhi. Devi isolare la fonte dell'infezione e devi farlo rapidamente.

Buona fortuna, non hai semplificato il tuo codice... Ora stai per ricevere una vera lezione di crittografia. Impiegare strutture dati efficaci e fare il possibile per abbreviare il codice (come tenere a mente DRY) è la migliore difesa contro una situazione come questa.

Il prossimo passo nella tua lista di apprendimento Java dovrebbe funzionare con gli array. Sono strutture dati importanti utilizzate per archiviare batch di punti dati.

Condividere Condividere Tweet E-mail Come creare ed eseguire operazioni su array in Java

Imparare Java? Lascia che gli array gestiscano i tuoi dati con facilità.

Leggi Avanti
Argomenti correlati
  • Programmazione
  • Giava
  • Tutorial sulla programmazione
Circa l'autore Girolamo Davidson(22 articoli pubblicati)

Jerome è uno scrittore dello staff di MakeUseOf. Si occupa di articoli su programmazione e Linux. È anche un appassionato di criptovalute e tiene sempre d'occhio l'industria delle criptovalute.

Altro da Jerome Davidson

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti