# Unterschied Klassen- und Instanzattribute



## Kozzarrelli (29. Dez 2010)

Hallo,

ich wollte mal wissen, worin genau der Unterschied zwischen Instanz- und Klassenattributen liegt. Es wäre net wenn es jemand anhand eines Programmbeispiels aufzeigen könnte. 

Meine Frage dazu wäre noch, ob diese Unterscheidung etwas mit dem Konstruktor zu tun hat.

Schonmal vielen Dank im Vorraus


----------



## Michael... (29. Dez 2010)

Kozzarrelli hat gesagt.:


> ich wollte mal wissen, worin genau der Unterschied zwischen Instanz- und Klassenattributen liegt.


Instanzattribute sind Attribute einer Instanz ;-) und Klassenattribute sind Attribute, die sich alle Instanzen einer Klasse (gemeinsam) teilen. Es handelt sich hierbei um statische Variablen.


Kozzarrelli hat gesagt.:


> Es wäre net wenn es jemand anhand eines Programmbeispiels aufzeigen könnte.


Müsste eigentlich in jeder Anfängerliteratur beschrieben werden.


Kozzarrelli hat gesagt.:


> Meine Frage dazu wäre noch, ob diese Unterscheidung etwas mit dem Konstruktor zu tun hat.


Nein.


----------



## ARadauer (29. Dez 2010)

```
public class Kunde {

      
      private String name; //Objektattribut gibt es für jedes Objekt
      public static int anzahl = 0; //Klassenattribut gibt es nur einmal
      
      
      public Kunde(String name) {
         this.name = name;
         anzahl++;
      }

      public String getName() {
         return name;
      }
      
      public void setName(String name) {
         this.name = name;
      }
      
      
      public static void main(String[] args) {
         Kunde hansi = new Kunde("Hansi");
         Kunde max = new Kunde("Max");
         
         System.out.println("Hansi: "+hansi.getName());
         System.out.println("MAx: "+max.getName());
         //klar oder?
         
         
         System.out.println(hansi.anzahl); 
         System.out.println(max.anzahl);
         //beide 2! es ist der selbe wert
         
         hansi.anzahl = 4;
         System.out.println(max.anzahl);
         //der auch 4, es ist der selbe wert!
         
         //aber eigentlich, nicht ganz sauber
         System.out.println(Kunde.anzahl);
         //besser es geht ja um die klasse und nicht um das objekt
         
         
         //System.out.println(Kunde.getName());
         //geht natürlich nciht... es geht hier ums objekt und nicht die klasse..
                  
      }     
}
```


----------



## Michael... (29. Dez 2010)

Hier mal eine kurze Beschreibung dazu:
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 6.6 Klassen- und Objektinitialisierung


----------



## Kozzarrelli (29. Dez 2010)

danke für die antworten, jetzt isses mir endlich mal klar geworden


----------

