Kursinhalt
Java Erweitert
Java Erweitert
Methodenüberladung
Verwendung einer Methode mit unterschiedlichen Parametern
Java ermöglicht es, verschiedene Methoden mit dem gleichen Namen zu schreiben. Diese Methoden können unterschiedliche Rückgabetypen und/oder Parametertypen besitzen. Dies dient dazu, dass wir diese Methoden mit verschiedenen Typen verwenden können. Nehmen wir das Beispiel einer Methode zum Ausgeben eines Arrays:
Wir können diese Methode so schreiben, dass sie Werte vom Typ int
akzeptiert, aber was ist, wenn wir ein Array vom Typ char
ausgeben müssen? Müssen wir dann eine Methode mit einem anderen Namen schreiben?
Java stellt für diesen Zweck das Methodenüberladen zur Verfügung.
Schauen wir uns ein Beispiel zum Ausgeben von Daten und zum Umkehren eines Arrays aus dem vorherigen Kapitel an:
Main.java
// 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; }
Wir haben die Methode flipArray
überladen, sodass sie verschiedene Parameter akzeptieren und zurückgeben kann: int
und char
. Wenn wir diese Methode aufrufen, kann sie sowohl int
- als auch char
-Typen akzeptieren und zurückgeben.
Nun überladen wir die Methode, um ein Array auf dem Bildschirm anzuzeigen. Diese Methode soll ebenfalls int
- und char
-Typen akzeptieren und zurückgeben:
Main.java
// 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(); }
Hier haben wir die Methode printArrayToTheConsole
überladen, sodass sie int
- und char
-Werte akzeptiert und zurückgibt.
Nun kombinieren wir die überladenen Methoden und verwenden sie in der main
-Methode für ein Array vom Typ int
und ein Array vom Typ char
:
Main.java
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(); } }
Wir haben zwei verschiedene Methoden überladen, indem wir die Möglichkeit hinzugefügt haben, diese Methoden mit Arrays vom Typ char
zu verwenden. Außerdem haben wir die Namen dieser Methoden leicht geändert, da wir sie nun mehrfach überladen können, um Werte von verschiedenen Typen zu akzeptieren und zurückzugeben.
Um dies zu überprüfen, haben wir zwei verschiedene Arrays erstellt, eines vom Typ int
und das andere vom Typ char
, und diese Arrays dann an die überladenen Methoden übergeben, wodurch wir die korrekten Ergebnisse erhalten haben.
Übrigens sind Ihnen überladene Methoden bereits begegnet.
Zum Beispiel ist die String
-Methode substring()
überladen und kann entweder einen Parameter, int beginIndex
, oder zwei Parameter, int beginIndex, int endIndex
, haben.
Methodenüberladung ist sehr nützlich und wird häufig in der Praxis verwendet.
Danke für Ihr Feedback!