Die Modellierung eines Ausschnittes der realen Welt geschieht durch eine Klassenhierarchie, d.h., gleichartige Objekte werden zu Klassen zusammengefasst, von denen durch Vererbung Spezialisierungen abgeleitet werden. Gleichartigkeit bedeutet die Übereinstimmung von objektbezogenen Datenfeldern und objektbezogenen Methoden. Die abgeleitete Klasse erbt von der Superklasse die dort definierten Datenfelder und Methoden, fügt ggf. eigene hinzu und kann ihnen ggf. durch Überschreiben eine neue Bedeutung geben. Jede Klasse besitzt einen oder mehrere Konstruktoren, die für das Instanziieren ihrer Objekte zuständig sind.
Datenfelder, die mit dem Schlüsselwort static deklariert werden, heißen Klassenvariable. Sie existieren pro Klasse genau einmal (unabhängig von der Zahl der kreierten Instanzen) und übernehmen die Rolle von globalen Variablen, auf die alle Objekte dieser Klasse zugreifen können.
Die Sichtbarkeit von Variablen und Methoden wird mit Hilfe von Modifiern geregelt. Ist ein Element einer Klasse mit keinem der Schlüsselworte public, private oder protected deklariert, dann ist es nur innerhalb von Klassen desselben Pakets sichtbar. Das Standardpaket besteht aus allen Klassen im aktuellen Arbeitsverzeichnis.
Die folgende Tabelle zeigt die Umstände, unter denen Klassenelemente der vier Sichtbarkeitstypen für verschiedene Klassen erreichbar sind.
Erreichbar für: | public | protected | paketsichtbar | private |
Dieselbe Klasse | ja | ja | ja | ja |
Subklasse im selben Paket | ja | ja | ja | nein |
Subklasse in anderem Paket | ja | ja | nein | nein |
Keine Subklasse, selbes Paket | ja | ja | ja | nein |
Keine Subklasse, anderes Paket | ja | nein | nein | nein |
Source: Datum.java JavaDoc: Datum.html Applet: Source: Person.java JavaDoc: Person.html Applet: Source: Student.java JavaDoc: Student.html Applet: Source: PersonTest.java JavaDoc: PersonTest.html Applet: Source: Mitarbeiter.java JavaDoc: Mitarbeiter.html
Source: Arbeiter.java JavaDoc: Arbeiter.html
Source: Angestellter.java JavaDoc: Angestellter.html Source: Firma.java JavaDoc: Firma.html Source: Kind.java JavaDoc: Kind.html Applet: