Kann die anzeigen()
Methode die Instanzvariablen des Objekts
(wie kontostand
) sehen?
Ja.
Anweisungen einer Methode (so wie anzeigen()
) können
die Instanzvariablen und die anderen Methoden des Objekts sehen. Aber sie können die Parameter (und lokalen Variablen) anderer Methoden nicht sehen.
Hier ist ein weiterer Blick auf die Konto
-Klasse:
class Konto { . . . . private int kontostand; . . . . void verarbeiteEinzahlung( int betrag ) { // Gültigkeitsbereich von betrag beginnt hier kontostand = kontostand + betrag ; } // Gültigkeitsbereich von betrag endet hier void verarbeiteAuszahlung( int betrag ) { // Gültigkeitsbereich von betrag beginnt hier int gebuehr; inkrementZaehler(); if ( kontostand < 100000 ) gebuehr = 15; else gebuehr = 0; kontostand = kontostand - betrag - gebuehr ; } // Gültigkeitsbereich von betrag endet hier }
Zwei Methoden verwenden den gleichen Bezeichner betrag
für zwei verschiedene formale Parameter.
Jede Methode hat ihre eigenen formalen Parameter, vollkommen unabhängig von anderen Methoden. Das ist OK.
Der Gültigkeitsbereich der zwei Parameter überschneidet sich nicht, so dass die Anweisungen der einen Methode
die formalen Parameter der anderen Methode nicht "sehen" können.
Zum Beispiel kann die Anweisung
kontostand = kontostand - betrag - gebuehr ;
in der zweiten Methode nur den formalen Parameter ihrer Methode sehen — der Gültigkeitsbereich des formalen Parameters der anderen Methode enthält diese Anweisung nicht.
Können die zwei formalen Parameter, die beide betrag
heißen, unterschiedliche Datentypen haben. (Kann zum Beispiel der eine ein int
und der andere ein long
sein)?