Können mehrere Methoden in einer Klasse den gleichen Namen haben? Wenn ja, wie wird festgelegt, welche dieser Methoden aufgerufen wird?

In Java können mehrere Methoden in einer Klasse den gleichen Namen haben, wenn sie sich durch ihre Signatur unterscheiden lassen. Das heißt Methoden mit gleichem Namen müssen anhand der Typen und Reihenfolge der Übergabeparameter unterscheidbar sein. Methoden mit gleichem Namen nennt man auch überladene Methoden.

Im folgenden Beispiel wird die Methode max() für verschiedene Datentypen implementiert. Die Methode max() liefert das Maximum der beiden Argumente. Beim Methodenaufruf wird die zu den Typen der Übergabeparameter passende Methode ausgewählt. Wird die Methode beispielsweise mit zwei int-Werten als Argument aufgerufen, wird die erste Methode verwendet.

static int max(int a, int b) {
    return a > b ? a : b;
}

static double max(double a, double b) {
    return a > b ? a : b;
}

static byte max(byte a, byte b) {
    return a > b ? a : b;
}