Metodöverladdning
Användning av en metod med olika parametrar i Java
Java tillåter oss att skriva olika metoder med samma namn. Dessa metoder kan ha olika returtyper och/eller parametertyper. Detta görs för att vi ska kunna använda dessa metoder med olika typer. Låt oss ta exemplet med en metod för att skriva ut en array:
Vi kan skriva denna metod för att acceptera värden av typen int, men vad händer om vi behöver skriva ut en array av typen char? Måste vi då skriva en metod med ett annat namn?
Java tillhandahåller metodöverladdning för detta ändamål.
Låt oss titta på ett exempel på att skriva ut data och vända en array från föregående kapitel:
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; }
Vi har överlagrat metoden flipArray för att acceptera och returnera olika parametrar: int och char. Om vi anropar denna metod kan den acceptera och returnera både int- och char-typer.
Nu ska vi överlasta metoden för att visa en array på skärmen. Denna metod ska också acceptera och returnera int- och char-typer:
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(); }
Här har vi överlagrat metoden printArrayToTheConsole för att acceptera och returnera int- och char-värden.
Nu kombineras de överlagrade metoderna och används i main-metoden för en array av typen int och en array av typen 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(); } }
Två olika metoder har överlagrats genom att lägga till möjligheten att använda dessa metoder med arrayer av typen char. Namnen på dessa metoder har även ändrats något, eftersom de nu kan överlagras flera gånger för att acceptera och returnera värden av olika typer.
För att verifiera detta skapades två olika arrayer, en av typen int och en av typen char, och dessa arrayer skickades sedan till de överlagrade metoderna, vilket gav korrekta resultat.
För övrigt har du redan stött på överlagrade metoder tidigare.
Till exempel är String-metoden substring() överlagrad och kan ha antingen en parameter, int beginIndex, eller två parametrar, int beginIndex, int endIndex.
Metodöverlagring är mycket användbart och vanligt förekommande i praktiken.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 2.63
Metodöverladdning
Svep för att visa menyn
Användning av en metod med olika parametrar i Java
Java tillåter oss att skriva olika metoder med samma namn. Dessa metoder kan ha olika returtyper och/eller parametertyper. Detta görs för att vi ska kunna använda dessa metoder med olika typer. Låt oss ta exemplet med en metod för att skriva ut en array:
Vi kan skriva denna metod för att acceptera värden av typen int, men vad händer om vi behöver skriva ut en array av typen char? Måste vi då skriva en metod med ett annat namn?
Java tillhandahåller metodöverladdning för detta ändamål.
Låt oss titta på ett exempel på att skriva ut data och vända en array från föregående kapitel:
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; }
Vi har överlagrat metoden flipArray för att acceptera och returnera olika parametrar: int och char. Om vi anropar denna metod kan den acceptera och returnera både int- och char-typer.
Nu ska vi överlasta metoden för att visa en array på skärmen. Denna metod ska också acceptera och returnera int- och char-typer:
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(); }
Här har vi överlagrat metoden printArrayToTheConsole för att acceptera och returnera int- och char-värden.
Nu kombineras de överlagrade metoderna och används i main-metoden för en array av typen int och en array av typen 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(); } }
Två olika metoder har överlagrats genom att lägga till möjligheten att använda dessa metoder med arrayer av typen char. Namnen på dessa metoder har även ändrats något, eftersom de nu kan överlagras flera gånger för att acceptera och returnera värden av olika typer.
För att verifiera detta skapades två olika arrayer, en av typen int och en av typen char, och dessa arrayer skickades sedan till de överlagrade metoderna, vilket gav korrekta resultat.
För övrigt har du redan stött på överlagrade metoder tidigare.
Till exempel är String-metoden substring() överlagrad och kan ha antingen en parameter, int beginIndex, eller två parametrar, int beginIndex, int endIndex.
Metodöverlagring är mycket användbart och vanligt förekommande i praktiken.
Tack för dina kommentarer!