Was sind Instanzvariablen? Was sind Klassenvariablen?

Instanzvariablen:

Instanzvariablen gehören zu einer Instanz einer Klasse – also einem Objekt. Jedes Objekt verfügt über seine eigenen Instanzvariablen. Auf eine Instanzvariable v kann mit this.v zugegriffen werden. Falls keine Verwechslungsmöglichkeit mit einer lokalen Variable gleichen Namens besteht, kann man this auch weglassen.

Klassenvariablen:

Klassenvariablen gehören zu einer Klasse. Unabhängig von der Anzahl der von dieser Klasse erzeugten Objekte existieren sie genau ein Mal. Klassenvariablen werden auch als statische Variablen bezeichnet (Schlüsselwort: static).

Beispiel:

class Person {
    private static int count; // Klassenvariable
    private String name;      // Instanzvariable

    Person(String name) {
        this.name = name;
        count++;
    }

    String getName() {
        return name;
    }

    int getCount() {
        return count;
    }
}

class Test {
    public static void main(String[] args) {
        Person p1 = new Person("Anna");
        Person p2 = new Person("Berta");
        Person p3 = new Person("Caesar");

        System.out.println(p3.getCount());  // Ausgabe: 3
    }
}

Jedes Mal wenn eine Instanz angelegt wird, wird die statische Variable count im Konstruktor inkrementiert. Am Ende des Programmlaufs hat count den Wert 3.