Eine Klasse ist eine Vorlage, die zur Erzeugung beliebig vieler Objekte mit ähnlichen Eigenschaften verwendet wird. Sie umfasst alle gemeinsamen Eigenschaften der von ihr abgeleiteten Objekte.

Als Klasse (class) bezeichnet man die Definition einer Idee, eines Konzepts, einer Art von Objekten.

Als Objekt (object), Exemplar oder Instanz (instance) bezeichnet man eine konkrete Ausprägung eines Objekts, also ein Stück aus der Menge der Objekte dieser Klasse.

Beispiele: Hubert Partl und Monika Kleiber sind Objekte der Klasse Mitarbeiter. Die Universität für Bodenkultur ist ein Objekt der Klasse Universität.

Je einfacher die Klassen gewählt werden, desto besser. Komplexe Objekte können aus einfacheren Objekten zusammengesetzt werden (z.B. ein Bücherregal enthält Bücher, ein Buch enthält Seiten, ein Atlas enthält Landkarten). Spezielle komplizierte Eigenschaften können auf grundlegende einfache Eigenschaften zurückgeführt werden (Vererbung, z.B. ein Atlas ist eine spezielle Art von Buch).

Eine Java-Datei entspricht einer Java-Klasse und beginnt immer mit einer Klassendefinition,
also mit dem Schlüsselwort "class" und einem großgeschriebenen Klassennamen.
Alles weitere steht dann innerhalb der geschweiften Klammern einer Klasse.

Beispiel:
public class Person {
   ... Anweisungen ...
}

Beim Start eines Java-Programms sucht die JVM in der beim Start angegebenen Java-Klasse nach der "main-Methode" und führt deren Anweisungen aus.

Beispiel:
public class PersonTesten {
  public static void main(String[] args) {
     ... Anweisungen ...
  }
}

Eine Java-Klasse ist eine Schablone (Blaupause) zur Erstellung von konkreten Objekten.
Ein Objekt wird von einer Klasse instanziiert, man spricht dann von der Instanz einer Klasse.
Beispiel: Mit Hilfe einer Klasse "Personendaten" können verschiedene Personenobjekte angelegt werden.

Eine Klasse enthält
  • Instanzvariablen
    (Eigenschaften bzw. Zustände)
  • Methoden
    (Verhalten bzw. Aktionen)
  Ein instanziiertes Objekt
  • weiss Dinge
    (Objektzustand)
  • tut Dinge
    (Objektverhalten)

Eine Klasse "Person" könnte folgende Instanzvariablen und Methoden enthalten:
Klasse:      Person
---------------------------------------
Instanz-     name
variablen:   anschrift
             telefon
---------------------------------------
Methoden:    setzeName
             leseName
             setzeAnschrift
             leseAnschrift
             setzeTelefon
             leseTelefon

Vereinfachte Klasse "Person" als Schablone für Objekte:
public class Person {
  private String name;

  public void setName(String name){
    this.name=name;
  }
  public String getName(){
    return this.name;
  }
}
Die Klassendefinition wird durch "class" und einen großgeschriebenen Klassennamen eingeleitet, in geschweiften Klammern folgen Instanzvariablen und Methoden. Hier wird die Variable "name" vom Typ String auf "private" gesetzt, sie kann wegen "private" nicht von außen geändert werden. Zum Ändern werden die Methoden setName und getName angeboten, die "public" (also von außen nutzbar) sind.

Um von einer Klasse Objekte anzulegen, muß eine Variable vom Typ der Klasse deklariert werden und ihr mit Hilfe des new-Operators ein neu erzeugtes Objekt zugewiesen werden. Also zuerst eine normale Variablendeklaration, wobei anstelle des primitiven Typs der Typname der selbst definierten Klasse gewählt wird. Dann per new-Operator eine neue Instanz anlegen.

Testklasse "PersonTest" zum Anlegen von zwei Personenobjekten:
public class PersonTest {
  public static void main(String[] args) {
    Person p1=new Person();
    Person p2=new Person();
    p1.setName("Herr A");
    p2.setName("Herr B");
    System.out.println("Name von Person 1 ist: "+p1.getName());
    System.out.println("Name von Person 2 ist: "+p2.getName());
  }
}
Wird die Klasse gestartet, dann werden in der main-Methode zwei neue Personenobjekte angelegt. Dazu werden zwei Instanzvariable p1 und p2 vom Typ der Klasse Person deklariert und diese per new-Operator dem Objekt Person zugewiesen. Über den Punktoperator "." wird dann auf die Methoden der Objekte (setName und getName) zugegriffen.

  Hinweis:
Instanziierte Objekte werden auf dem Java-Heap gespeichert. Die JVM (Java Virtual Machine) verwaltet diesen Speicherbereich, sie legt dort neue Objekte an und löscht nicht mehr benötigte Objekte. Objektvariable wie "p1" werden als Referenzen gespeichert. Man kann sich das wie eine Fernbedienung vorstellen, die auf den Heap zeigt und Schaltknöpfe für alle Methoden (get, set) eines Objekts enthält.