-
18.06.10 14:06 #1
- Registriert seit
- Jan 2010
- Beiträge
- 51
Hallo,
ich habe folgenden kurzen Code:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
public class Sparbuch{ public Sparbuch( float k, float p, int l ) throws Exception{ if( k < 0 || p < 0 || l < 0 ) throw new Exception( "Fehler beim Erzeugen des Sparbuchs." ); } public static void main( String[] args ){ try{ Sparbuch sb = new Sparbuch( 100, 5, 3 ); System.out.println( sb.k ); } catch ( Exception e ){ System.out.println( e ); } } }
Nun zeigt mir der Compiler an, dass die Variable k (Zeile 14) nicht existieren würde. Das kann ich aber nicht ganz nachvollziehen. Kann mich jemand kurz aufklären?
-
Hallo!
Da ist eindeutig ein Denkfehler vorhanden.
Schau,
Die Parameter die dem Konstruktor übergeben werden, existieren nur innerhalb von diesem.
Eben bis zur Klammer "}".
Was du benötigst, sind Attribute, also die "Eigenschaften" der Klasse.
Attribute werden üblicherweise im Klassenbody vor dem Konstruktor definiert.
Sie bekommen dann Werte durch den Konstruktor zugewiesen.
Hier ein Beispiel:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
public class Sparbuch{ public float k; public float p; public int l; public Sparbuch( float k, float p, int l ) throws Exception{ if( k < 0 || p < 0 || l < 0 ){ throw new Exception( "Fehler beim Erzeugen des Sparbuchs." ); } this.k = k; this.p = p; this.l = l; } public static void main( String[] args ){ try{ Sparbuch sb = new Sparbuch( 100, 5, 3 ); System.out.println( sb.k ); } catch ( Exception e ){ System.out.println( e ); } } }
Ich habe also drei Attribute erstellt, und ihnen im Konstruktor Werte zugewiesen (eben die dem Konstruktor übergebenen).
Die erstellten Attribute tragen das Schlüsselwort "public", was bedeutet dass sie von außen aus sichtbar sind.
Dies ist nicht immer erwünscht.
Bitte sieh dir dazu auch speziell das Thema "Datenkapselung" an.
Ich kann dir folgende Lektüre ans Herz legen:
http://openbook.galileocomputing.de/javainsel8/
Weiters noch ein Tipp:
Es ist sinnvoller aussagekräftigere Namen als k,p und l zu verwenden, damit sofort ersichtlich ist, worum es sich handelt.
mfg
Martin
-
18.06.10 14:32 #3
- Registriert seit
- Jan 2010
- Beiträge
- 51
Ich danke dir!
Ja, da war wohl ein kleiner Denkfehler...
Ähnliche Themen
-
JRadioButton kennt angeblich Konstruktor nicht
Von Tinipieps im Forum JavaAntworten: 2Letzter Beitrag: 11.03.10, 14:29 -
Datei vorhanden, bei Abfrage existiert sie angeblich nicht
Von Aiwonnie im Forum JavaAntworten: 12Letzter Beitrag: 25.07.07, 18:27 -
Value ist angeblich nicht verfügbar
Von Pullmann im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 23.05.06, 12:27 -
Zeiger zeigt angeblich nicht auf eine Klasse
Von Silvercreast im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 09.02.06, 08:00 -
Finde den Fehler nicht (unexpected $ - angeblich unerwartetes ende)
Von LordSikon im Forum PHPAntworten: 3Letzter Beitrag: 12.05.05, 19:51



1Danke

Zitieren
Login





