tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von mccae
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
181
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Cherrycoke Cherrycoke ist offline Mitglied Silber
    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?
     

  2. #2
    Avatar von mccae
    mccae mccae ist offline Senfdazugeber
    Registriert seit
    Dec 2007
    Ort
    Wien
    Beiträge
    226
    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
    Cherrycoke bedankt sich. 

  3. #3
    Cherrycoke Cherrycoke ist offline Mitglied Silber
    Registriert seit
    Jan 2010
    Beiträge
    51
    Ich danke dir!

    Ja, da war wohl ein kleiner Denkfehler...
     

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 11.03.10, 14:29
  2. Antworten: 12
    Letzter Beitrag: 25.07.07, 18:27
  3. Value ist angeblich nicht verfügbar
    Von Pullmann im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 23.05.06, 12:27
  4. Zeiger zeigt angeblich nicht auf eine Klasse
    Von Silvercreast im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 09.02.06, 08:00
  5. Antworten: 3
    Letzter Beitrag: 12.05.05, 19:51