Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sovraccarico dei Metodi | Metodi
Java Avanzato
course content

Contenuti del Corso

Java Avanzato

Java Avanzato

1. Struttura Profonda di Java
2. Metodi
3. String Avanzato
4. Classi
5. Classi Avanzate

book
Sovraccarico dei Metodi

Utilizzo di un metodo con parametri diversi

Java consente di scrivere diversi metodi con lo stesso nome. Questi metodi possono avere tipi di ritorno e/o tipi di parametri differenti. Questo viene fatto per poter utilizzare questi metodi con diversi tipi di dati. Prendiamo come esempio un metodo per stampare un array:

Possiamo scrivere questo metodo per accettare valori di tipo int, ma cosa succede se dobbiamo stampare un array di tipo char? Dobbiamo scrivere un metodo con un nome diverso?

Java offre la sovraccarica dei metodi per questo scopo.

Vediamo un esempio di stampa dei dati e di inversione di un array dal capitolo precedente:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627
// method to reverse an int array static int[] flipArray(int[] array) { // creating a new array to store the reversed elements int[] result = new int[array.length]; int index = 0; // iterating over the input array in reverse order for (int i = array.length - 1; i > 0; i--) { result[index] = array[i]; index++; } // returning the reversed int array return result; } // method to reverse a char array static char[] flipArray(char[] array) { // creating a new array to store the reversed elements char[] result = new char[array.length]; int index = 0; // iterating over the input array in reverse order for (int i = array.length - 1; i >= 0; i--) { result[index] = array[i]; index++; } // returning the reversed char array return result; }

Abbiamo sovraccaricato il metodo flipArray per accettare e restituire parametri diversi: int e char. Se invochiamo questo metodo, può accettare e restituire sia tipi int che char.

Ora sovraccarichiamo il metodo per visualizzare un array sullo schermo. Anche questo metodo deve accettare e restituire tipi int e char:

Main.java

Main.java

copy
12345678910111213141516171819
// method to print an int array static void printArrayToTheConsole(int[] array) { // iterating through each element of the int array for (int element : array) { System.out.print(element + " "); } // printing a blank line after the array System.out.println(); } // method to print a char array static void printArrayToTheConsole(char[] array) { // iterating through each element of the char array for (char element : array) { System.out.print(element + " "); } // printing a blank line after the array System.out.println(); }

Qui abbiamo sovraccaricato il metodo printArrayToTheConsole per accettare e restituire valori di tipo int e char.

Ora combiniamo i metodi sovraccaricati e utilizziamoli nel metodo main per un array di tipo int e un array di tipo char:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; char[] charArray = {'s', 'b', 'c', 'd', 'e', 'f', 'g'}; printArrayToTheConsole(flipArray(intArray)); printArrayToTheConsole(flipArray(charArray)); } // method to reverse an int array static int[] flipArray(int[] array) { int[] result = new int[array.length]; int index = 0; // iterating over the array in reverse order for (int i = array.length - 1; i > 0; i--) { result[index] = array[i]; index++; } return result; } // method to reverse a char array static char[] flipArray(char[] array) { char[] result = new char[array.length]; int index = 0; // iterating over the array in reverse order for (int i = array.length - 1; i >= 0; i--) { result[index] = array[i]; index++; } return result; } // method to print an int array to the console static void printArrayToTheConsole(int[] array) { // printing each element of the int array for (int element : array) { System.out.print(element + " "); } System.out.println(); } // method to print a char array to the console static void printArrayToTheConsole(char[] array) { // printing each element of the char array for (char element : array) { System.out.print(element + " "); } System.out.println(); } }

Abbiamo sovraccaricato due diversi metodi aggiungendo la possibilità di utilizzare questi metodi con array di tipo char. Abbiamo anche leggermente modificato i nomi di questi metodi, poiché ora possiamo sovraccaricarli più volte per accettare e restituire valori di tipi diversi.

Per verificarlo, abbiamo creato due array differenti, uno di tipo int e l'altro di tipo char, e poi abbiamo passato questi array ai metodi sovraccaricati, ottenendo i risultati corretti.

A proposito, hai già incontrato metodi sovraccaricati in precedenza. Ad esempio, il metodo String della classe substring() è sovraccaricato e può avere un solo parametro, int beginIndex, oppure due parametri, int beginIndex, int endIndex. Il sovraccarico dei metodi è molto utile ed è comunemente utilizzato nella pratica.

question mark

Quante volte possiamo sovraccaricare un metodo?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 6

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

course content

Contenuti del Corso

Java Avanzato

Java Avanzato

1. Struttura Profonda di Java
2. Metodi
3. String Avanzato
4. Classi
5. Classi Avanzate

book
Sovraccarico dei Metodi

Utilizzo di un metodo con parametri diversi

Java consente di scrivere diversi metodi con lo stesso nome. Questi metodi possono avere tipi di ritorno e/o tipi di parametri differenti. Questo viene fatto per poter utilizzare questi metodi con diversi tipi di dati. Prendiamo come esempio un metodo per stampare un array:

Possiamo scrivere questo metodo per accettare valori di tipo int, ma cosa succede se dobbiamo stampare un array di tipo char? Dobbiamo scrivere un metodo con un nome diverso?

Java offre la sovraccarica dei metodi per questo scopo.

Vediamo un esempio di stampa dei dati e di inversione di un array dal capitolo precedente:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627
// method to reverse an int array static int[] flipArray(int[] array) { // creating a new array to store the reversed elements int[] result = new int[array.length]; int index = 0; // iterating over the input array in reverse order for (int i = array.length - 1; i > 0; i--) { result[index] = array[i]; index++; } // returning the reversed int array return result; } // method to reverse a char array static char[] flipArray(char[] array) { // creating a new array to store the reversed elements char[] result = new char[array.length]; int index = 0; // iterating over the input array in reverse order for (int i = array.length - 1; i >= 0; i--) { result[index] = array[i]; index++; } // returning the reversed char array return result; }

Abbiamo sovraccaricato il metodo flipArray per accettare e restituire parametri diversi: int e char. Se invochiamo questo metodo, può accettare e restituire sia tipi int che char.

Ora sovraccarichiamo il metodo per visualizzare un array sullo schermo. Anche questo metodo deve accettare e restituire tipi int e char:

Main.java

Main.java

copy
12345678910111213141516171819
// method to print an int array static void printArrayToTheConsole(int[] array) { // iterating through each element of the int array for (int element : array) { System.out.print(element + " "); } // printing a blank line after the array System.out.println(); } // method to print a char array static void printArrayToTheConsole(char[] array) { // iterating through each element of the char array for (char element : array) { System.out.print(element + " "); } // printing a blank line after the array System.out.println(); }

Qui abbiamo sovraccaricato il metodo printArrayToTheConsole per accettare e restituire valori di tipo int e char.

Ora combiniamo i metodi sovraccaricati e utilizziamoli nel metodo main per un array di tipo int e un array di tipo char:

Main.java

Main.java

copy
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
package com.example; public class Main { // main method to run the application public static void main(String[] args) { // do not modify the code below int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; char[] charArray = {'s', 'b', 'c', 'd', 'e', 'f', 'g'}; printArrayToTheConsole(flipArray(intArray)); printArrayToTheConsole(flipArray(charArray)); } // method to reverse an int array static int[] flipArray(int[] array) { int[] result = new int[array.length]; int index = 0; // iterating over the array in reverse order for (int i = array.length - 1; i > 0; i--) { result[index] = array[i]; index++; } return result; } // method to reverse a char array static char[] flipArray(char[] array) { char[] result = new char[array.length]; int index = 0; // iterating over the array in reverse order for (int i = array.length - 1; i >= 0; i--) { result[index] = array[i]; index++; } return result; } // method to print an int array to the console static void printArrayToTheConsole(int[] array) { // printing each element of the int array for (int element : array) { System.out.print(element + " "); } System.out.println(); } // method to print a char array to the console static void printArrayToTheConsole(char[] array) { // printing each element of the char array for (char element : array) { System.out.print(element + " "); } System.out.println(); } }

Abbiamo sovraccaricato due diversi metodi aggiungendo la possibilità di utilizzare questi metodi con array di tipo char. Abbiamo anche leggermente modificato i nomi di questi metodi, poiché ora possiamo sovraccaricarli più volte per accettare e restituire valori di tipi diversi.

Per verificarlo, abbiamo creato due array differenti, uno di tipo int e l'altro di tipo char, e poi abbiamo passato questi array ai metodi sovraccaricati, ottenendo i risultati corretti.

A proposito, hai già incontrato metodi sovraccaricati in precedenza. Ad esempio, il metodo String della classe substring() è sovraccaricato e può avere un solo parametro, int beginIndex, oppure due parametri, int beginIndex, int endIndex. Il sovraccarico dei metodi è molto utile ed è comunemente utilizzato nella pratica.

question mark

Quante volte possiamo sovraccaricare un metodo?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 6
some-alt