Ein kleines Java Lexikon

Das kleine Java Lexikon soll helfen, die Sprachwelt von Java zu verstehen. Das kleine Lexikon wird nie vollkommen sein und manche Stichwörter oder Querverweise fehlen noch.

Auch der längste Marsch beginnt mit dem ersten Schritt. (Laotse, 6JH v. Chr.)

Wenn Ihnen was fehlt oder ich was falsch erläutert habe dann schreiben Sie einen Kommentar.

Stichwort Erläuterungen
ableiten,
extends,
vererben
Man spricht bei einer objektorientierten Sprache zwar immer von „Vererbung“ aber vererben kann nur der Verstorbene bzw. Erblasser. In Java erbt eine „Kindklasse“ (=Subklasse) die Attribute und Methoden von der „Elternklasse“ (=Superklasse). Man spricht also besser von ableiten, spezialisieren oder erweitern (engl.: extend).

Die Subklasse (hier: Mitarbeiter) spezialisiert die Superklasse (hier: Person) indem die Subklasse die Superklasse mit weiteren Attributen oder Methoden ergänzt. Die Subklasse kann nicht auf private Attribute oder Methoden der Superklasse (hier: name) zugreifen und muss deren getter oder setter nutzen.

Die Subklasse erbt alle public und protected Attribute und Methoden der Superklasse. Konstruktoren und private Attribute oder Methoden werden nicht vererbt. Wenn kein Sichtbarkeitsmodifikator angegeben wurde, gilt die Paketsichtbarkeit (default).

Die vererbten Methoden können in der Subklasse überladen oder überschrieben werden. Beim Überschreiben von Methoden kann auch der Sichtbarkeitsmodifikator verändert werden: Das Attribut bzw. die Methode der Subklasse darf nicht „privater“ als in der Superklasse sein.

Objekte der Subklasse sind nach der Ableitung vom Typ „Subklasse“ und auch vom Typ „Superklasse“. Der Datentyp ist natürlich komplex und kann durch eine Referenz dargestellt werden.

abstract  Im Gegensatz zu konkreten Klassen kann man von abstrakten Klassen keine Objekte (=Exemplare, Instanzen) erstellen. Abstrakte Klassen „modellieren“ Attribute und Methoden, welche dann von Subklassen geerbt werden können.

Abstrakte Methoden haben keinen Funktionsrumpf und geben lediglich die Signatur vor. Die Unterklasse (Subklasse) muss die geerbte abstrakte Methode konkretisieren bzw. implementieren.

Man nutzt abstrakte Klassen als „strukturierendes Element“ in der Vererbungshierache um eine Gemeinsamkeit auszudrücken: A „ist Teil von“ B

Interface Klassen sind Spezialfälle von abstrakten Klassen.

Annotation  Durch Annotationen werden dem Compiler so genannte Metadaten übermittelt. Die bekannteste Annonation ist @Override falls die Methode der Superklasse überladen werden soll.

Wenn sicher gestellt werden soll, dass ein Parameter nicht Null sein soll, so verwendet man @NotNull

Attribut,
Objektattribut
Klassen oder Objekte besitzen „Werte“ bzw. Eigenschaften in Form von Attributen.

Entweder ist ein Attribut an die Existenz einer Klasse (Klassenattribut) oder an die Existenz eines Objektes (Objektattribut) gebunden. Attribute können primitive oder wiederum komplexe Datentypen sein.

Bytecode Der Compiler übersetzt Java Quellcode (.java) in maschinenunabhängigen Java Bytecode.
Casting
Classloader,
ClassLoader
Der Classloader läd Klassen…

Java Klassen sind i.d.R. *.class Dateien ind enthalten so genannten Bytecode. Der Compiler erzeigt für jede Java Klasse eine *.class Datei. Der Classloader läd die class-Datei wenn Klasseninformationen benötigt werden.

Collections
Compiler
DAO Data Access Object (DAO)
Exception
Fehler,
Fehlerbehandlung
 Siehe: Exception
Feld Instanzvariable oder einfach Attribut
final Finale Attribute entspechen am ehesten den Konstanten. Eine finale Variable darf nur einmal mit einem Wert/Referenz belegt werden. In Java können auch Methoden und Klassen final deklariert werden.

Finale Methoden können nicht überschrieben werden.

Funktion Methode
getter,
Get-Methode
Eine meistens öffentliche Methode zum abfragen (engl. get) von privaten Attributen.

Get-Methoden ermöglichen den lesenden Zugriff auf meist private Instanz-/Objektattribute.

Siehe auch: setter

Grabage  Der Grabage Collector (GC) bereinigt den Heap-Speicher der JVM und löscht nicht referenzierte Objekte.
Heap Speicherbereich einer JVM in dem Objekte abgebildet werden.

Eine Objektreferenz ist der Zeiger zu dem Speicherbereich im Heap.

Innere Klasse Die innere Klasse hat eine starke Abhängigkeit zu ihrer äußeren (generierenden) Klasse.

Wenn das Objekt der äußeren Klasse nicht mehr existiert, gehen auch die Objekte der inneren  Klasse verloren.

Instanz Objekt

Der Begriff „Instanz“ ist eine irreführende Übersetzung vom englischen „Instance“. Besser wäre die korrekte Übersetztung „Exemplar“ oder eben „Objekt“. Ein Objekt ist ein Exemplar einer Klasse.

Instanzvariable Auch Feld oder Objektattribut genannt. I.d.R. spricht man einfach von Attributen und meint damit Werte (Variablen oder Konstanten) die an die Existenz von Objekten gebunden sind.

Siehe auch: Klassenattribut

interface,
Interface,
Schnittstelle
Ein Spezialfall von abstrakten Klassen ist eine Interface Klasse. Eine Schnittstelle enthält keine Implementierungen, sondern deklariert nur den Name, Rückgabewert und  die Signatur einer (abstrakten) Methode, ohne Rumpf. Alle Methoden einer Schnittstelle sind automatisch abstract und public.

Interfaces schaffen „Gemeinsamkeiten“ von unterschiedlichen Objekten.

JVM Die Java Virtual Machine (JVM) stellt das Java Runtime Environment (JRE)  bzw. Laufzeitumgebung von ein Java Programm zur Verfügung.
JRE Die Java Runtime Environment (JRE) führt den maschinenunabhängigen Bytecode eines Java Programms aus. Der Compiler übersetzt den Quellcode (*.java) in Bytecode (*.jar) Das Java Programm wird z.B. als Java Archiv (JAR) zur Verfügung gestellt und von der JRE in maschinenabhängigen Code übersetzt.
Klasse Eine Klasse definiert Werte (=Attribute) und Fähigkeiten (=Methoden). Die Objekte einer Klasse haben somit „ähnliche“ Eigenschaften.

Man sollte Klassen nür für „ähnliche“ Objekte definieren. Für weitere Spezialisierungen sollten weitere Klassen abgeleitet (vererbt) werden.

Klassenattribut Ein Klassenattribut ist keinem einzelnen Objekt (=Objektattribut), sondern der gesamten Klasse zugeordnet, unabhängig von der Existenz von Objekten! Jedes Klassenattribut existiert nur ein einziges Mal und wird auch als statisches (engl. static) Attribut bezeichnet.

Da sich Klassenattribute nicht auf ein konkretes Objekt, sondern die gesamte Klasse beziehen, erfolgt der Zugriff ausschließlich über den Klassennamen.

Klassenmethode Eine Klassenmethode ist eine Methode die keinem einzelnen Objekt (=Objektmethode), sondern der gesamten Klasse zugeordnet, unabhängig von der Existenz von Objekten!

Jede Klassenmethode existiert nur ein einziges Mal und wird auch als statische (engl. static) Methode bezeichnet.

Statische Methoden können nicht auf non-static Methoden (=Objektmethoden) zugreifen, da zur Runtime die Existenz der Objektmethode nicht sicher gestellt ist.

Siehe auch: Methode

Konstruktor Ein Konstruktor ist eine spezielle Klassenmethode die den Namen der Klasse trägt und beim Erzeugen (=instanzieren) von Objekten aufgerufen wird. Konstruktoren werden mit new <Klasse>(<Parameter>) aufgerufen. Oft werden Konstruktoren zum setzen von Startwerten genutzt.

Konstruktoren haben keinen Rückgabewert, können überladen werden und rufen keine anderen Konstruktoren auf. Wenn kein Konstruktor angegeben wird, zu verwendet Java den parameterlosen Default-Konstruktor. Der Default-Konstruktor setzt alle Klassenattribute auf Null!

Aufgrund der Signatur sind mehrere gleichnamige Konstruktoren möglich.

Konstruktoren werden nicht vererbt! Bei der Ausführung des Kind-Konstruktors wird automatisch der Standard (=parameterlose) Konstruktor der Elternklasse (=Superklasse) ausgeführt. Falls es keine Standard-Konstruktoren in der Elternklasse gibt, so erzeugt der Compiler einen Fehler.

main() Die Methode main() muss eine bestimmte Signatur haben und ist direkt ausführbar.

main() ist also eine statische Methode und existiert unabhängig vom Objekt. Ansonsten könnte man main() auch nicht „von außen“ aufrufen.

Da main() innerhalb der Klasse eine statische Methode ist, kann main() auch nicht auf non-static Attribute oder Methoden der eigenen Klasse zugreifen. Der Compiler oder Eclipse zeigen den Fehler: „Cannot make a static reference to the non-static ….“ an. Daher sollten static Methoden möglichst früh verlassen werden. Das folgende Beispiel implementiert main() zu Testzwecken:

Methode,
Objektmethode
Eine Methode definiert die Fähigkeiten einer Klasse. Eine Methode hat eine Sichtbarkeit, eine Gültigkeitsdauer und einen Rückgabewert. An eine Methode können Parameter übergeben werden (Call-by-Value).

Entweder ist eine Methode an die Existenz einer Klasse (Klassenmethode) oder an die Existenz eines Objektes (Objektmethode) gebunden. i.d.R. werden Methoden an Objekte gebunden.

Methoden sind vergleichbar zu Funktionen in prozeduralen Sprachen.

Objekt Ein Objekt ist eine instanzierte Klasse bzw. ein Exemplar einer Klasse und eindeutig durch eine Referenz gekennzeichnet.

Ein Objekt wird durch new <Klassenamne>(<Parameterliste>) angelegt.

Parameter Die Werte an eine Methode werden auch Parameter benannt. An eine Methode können Parameter in Form von primitiven und komplexen Datentypen übergeben werden.

Einer Methode werden die Parameter als Wert (Call-by-Value) übergeben, wobei komplexe Datentypen immer Referenzen (=Adresse im Heap-Speicher) sind.

Die Parameterliste einer Methode ist Teil ihrer Signatur.

Quellcode  Der Quellcode enthält den „lesbaren“ Java Programmcode und wird vom Compiler in Java Bytecode übersetzt. Der Bytecode ist maschinenunabhängig und wird in einer JRE ausgeführt.
Referenz Eine Referenz ist ein Zeiger auf ein Objekt oder einem Array. Die Referenz enthält also nicht den Wert der Variable (siehe: primitive Datentypen) sondern die Referenz verweist auf den Speicherort des Objektes bzw. Array. Also eine bestimmte Adresse im Heap-Speicher der JVM. Falls das Objekt nicht (mehr) existiert hat die Referenz der Wert null.

setter,
Set-Methode
Eine meistens öffentliche Methode zum setzen (engl. set) von privaten Attributen.

Set-Methoden ermöglichen eine Datenkapselung und erhöhen die Sicherheit von Klassen indem sie die Parameter vor der Zuweisung an das Objekt auf Integrität prüfen.

Siehe auch: getter

Sichtbarkeit Klassen, Objekte, Konstruktoren, Attribute, Methoden sind je nach Beziehung unterschiedlich sichtbar:

Eigenschaft
sieht eigene Klasse? sieht Klasse im gleichen Paket? sieht Unterklasse im anderen Paket? sieht Klasse in anderem Paket?
public ja ja ja ja
protected ja ja ja nein
private ja nein nein nein
package* ja ja nein nein

(*) package ist kein Sichtbartkeitsmodifizierer sondern die Standardsichtbarkeit innerhalb des eigenen Paketes.

Signatur Da in Java Methoden überladen werden können, ist der Name der Methode nicht aussagekräftig genug. Die Signatur einer Methode ist

Der Rückgabetyp ist kein Bestandteil der Signatur.

static Ein static Attribut oder Methode existiert unabhängig vom Objekt und werden mit dem laden der Klasse (siehe: Classloader) angelegt. Statische Attribute oder Methoden werden auch Klassenattribute bzw Klassenmethoden genannt.

Da statische Methoden unabhängig vom Objekt existieren, können static Methoden nicht auf non-static Attribute oder Methoden zugreifen. Der Zugriff aus statische Attribute einer Klasse sollte über statische Klassenmethoden (siehe: getter & setter) erfolgen.

Statische Attribute oder Methoden werden über den Klassenname angesprochen. Im Beispiel ist das statische Attribut anzahl nur über die statische Methode Haus.getAnzahl() zugänglich.

Siehe auch: main()

super,
super()
Die spezielle Referenz super ermöglicht den Zugriff auf (überladene) Methoden der Elternklasse (=Oberklasse). Nach dem Motto „Früher war es auch nicht schlecht“ können spezialisierte Methoden der Kindklasse mit super trotzdem auf die Methoden der Elternklasse zugreifen.

Mit der Referenz super() werden die Konstruktoren der Elternklasse aufgerufen.

this,
this()
 Das Schlüsselwort this hat zwei Funktionen:

  1. this.<referenz> »zeigt« als Referenz auf das aktuelle (eigene) Objekt
  2. this(<parameter>) ruft einen anderen Konstruktor der gleichen Klasse auf

 

Typ,
Datentyp
Java unterscheidet primitive und komplexe Datentypen:

  • primitiv: boolean, char, byte, short, intlong, float,double
  • komplex: Klasse mit Attributen

Ein Attribut (Variable) eines einem primitiven Datentyps enthält den Wert der Variable während komplexe Datentypen eine Referenz (Zeiger) auf das Objekt enthalten.

überladen Methoden einer Klasse werden überladen, indem man in der Subklasse eine gleichnamige Methode mit eine andere Parameterliste erstellt. Siehe Signatur

Da die Subklasse nicht auf das private Attribut der Superklasse zugreifen kann, muss die überladene Methode den setter der Superklasse (hier: super.setName()) nutzen. Objekte der Subklasse können nun zwei gleichnamige Methoden (hier: setName()) nutzen.

Methoden mit identischer Signatur werden in der Subklasse überschrieben.

überschreiben,
@Override
Methoden einer Klasse werden überschrieben, indem man in der Subklasse eine gleichnamige Methode mit identischer Parameterliste definiert. Siehe auch: Signatur

Die Methode der Subklasse (hier: setName()) hat die gleiche Signatur wie die Methode der Superklasse. Die Annotation Override ist optional, hilft jedoch den Code zu verstehen und lässt zusätzlich den Compiler für dich prüfen.

Siehe auch: überladen

Variable In Java existieren Attribute oder Parameter.

 

 

Veröffentlicht in Internet Getagged mit: ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*