(a) keine klassenbasierte Mehrfachvererbung
Ein wesentliches Merkmal von Java ist, dass die Sprache
keine Mehrfachvererbung von Klassen bietet wie z.B. C++.
Ein Java-Klasse kann demnach nur genau von einer anderen
Klasse abgeleitet sein ( Schlüsselwort „extends“ ), was
die Vererbungshierarchie einfach und übersichtlich macht.
Statt der klassenbasierten Mehrfachvererbung wie sie in C++ möglich
ist, bietet Java als Ersatz die so genannte schnittstellenbasierte
Mehrfachvererbung. Ein Java-Klasse kann dabei beliebig viele
Schnittstellen erben, was sie durch das Schlüsselwort "implements"
anzeigt.
Da Schnittstellen nur die Methoden, nicht aber deren Implementierung
festlegen, ist die Java-Klasse prinzipiell selbst dafür zuständig für
die Implementierung der vererbten Methoden zu sorgen. In der Praxis
wird man dabei aber meistens die Aufrufe für eine Schnittstelle an
eine Hilfsklasse delegieren, um Wiederholung von Code zu vermeiden.
(b) keine reine objektorientierte Sprache
Java kennt einige einfache Grunddatentypen , wie int, float, char oder
Arrays, die keine Objekte sind. Die Sprache ist daher wie C++ als hybride
objektorientierte Sprache einzustufen, die bei den Datentypen
Anleihen aus prozeduralen Sprachen wie C nimmt.