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
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
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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package 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.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 2.63
Sovraccarico dei Metodi
Scorri per mostrare il menu
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
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
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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354package 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.
Grazie per i tuoi commenti!