Ist der Name einer Methode innerhalb oder außerhalb der Glasbox?
Außerhalb — so dass er von anderen Methoden "gesehen" und verwendet werden kann.
Innerhalb des Körpers einer Methode kann ein Parameter genau wie eine Variable verwendet werden. Er kann in arithmetischen Ausdrücken, in Zuweisungsanweisungen usw. verwendet werden.
Aber, eine Änderung des Parameters hat keinen Effekt außerhalb des Methodenkörpers. Ein Parameter ist eine "lokale Kopie", egal welchen Wert der Aufrufer an die Methode übergeben hat. Jede Änderung, die an ihm vorgenommen wird, betrifft nur diese lokale Kopie. Zum Beispiel:
class Konto { . . . . private int kontostand; void verarbeiteAuszahlung( int betrag ) { int gebuehr; if ( kontostand < 100000 ) gebuehr = 15; else gebuehr = 0; kontostand = kontostand - betrag - gebuehr ; // Ändern der lokalen Kopie "betrag" betrag = 0 ; } } class KontoTester { public static void main ( String[] args ) { Konto aktuell; int scheck = 5000; aktuell = new Konto( "123-345-99", "Wanda Fish", 100000 ); // gibt "5000" aus System.out.println( "Scheck: " + scheck ); // Aufruf von verarbeiteAuszahlung() mit dem Wert 5000 aktuell.verarbeiteAuszahlung( scheck ); // gibt "5000" aus — "scheck" wurde nicht geändert System.out.println( "Scheck: " + scheck ); } }
Der formale Parameter betrag
ist
der Name, der von verarbeiteAuszahlung()
für den Wert 5000
verwendet wird, der ihm vom Aufrufer übergeben wurde.
Die Methode kann den Wert, der in betrag
enthalten ist ändern,
aber das hat keine Auswirkung auf die Variable des Aufrufers.
Dieses Thema wird in den folgenden Kapiteln weiter erörtert. Ein Parameter kann als eine Einbahnstraßen-Mitteilung betrachteet werden, die der Aufrufer verwendet, um Werte an die Methode zu übermitteln.
Angenommen, dass die main()
Methode in dem Beispiel folgendes tat:
aktuell.verarbeiteAuszahlung( 7000 ); // verarbeiteAuszahlung() // mit dem Wert 7000 aufrufen
Ist das OK? Was würde die Anweisung
betrag = 0 ;
in der Methode tun?