Begriffe&Co Flashcards
Attribut
objektlokale Variable
Zustand
programmtechnisch realisiert durch Attribute, Belegung
Klassenattribut
Attribut einer Klasse, deklariert mit static
Nachricht
Information, die an ein Objekt versandt wir dun vom Objekt verstanden sowie verarbeitet werden kann (Methode)
Methode
Programmcode zur Reaktion auf Nachrichten
Lebensdauer
zeitliche Existenz eines Objekts
Konstruktor
spezielle Methode zur Objektinitialisierung
Identität
Objekte sind unterschiedlich - sie haben eine Identität
Objekt
Einheit Daten und Code, Instanz einer Klasse
Referenz
Adresse für ein Objekt
Instanz
konkretes Objekt einer Klasse, erzeugt durch new
this
impliziter Parameter, self-Objekt
alias
weitere Referenz auf ein Objekt
formaler Parameter
an eine Methode übergebene Parameter
Signatur einer Methode
Modifikatoren Ergebnistyp Methodenname(Parameterliste) throws Deklaration
Deklaration
Festlegung Typ und Name (z.B. Variable)
Variable
Speicher für Werte
static
Schlüsselwort, Modifikator, statische Deklaration
final
Schlüsselwort, Modifikator, nach Initialisierung unveränderlich
Dies bedeutet insbesondere, dass die entsprechende Klasse, Variable oder Methode bei einer Vererbung nicht überschrieben werden darf. Eine final Methode ist damit für alle Subklassen festgelegt, eine finale Klasse darf nicht vererbt werden, und eine finale Variable ist nach der Initialisierung konstant.
Feld
Array, Datentyp zur Speicherung von gleichen Datentypen
Initialisierung
Erstmalige Belegung einer Variable
Klassifizierung
Hierarchische Strukturierung, Zuordnung von Objekten
Klasse
Beschreibung der Eigenschaften, die ein Objekt der Klasse hat
abstrakte Klasse
Klasse mit unvollständiger Implementierung
innere Klasse
Klasse, die innerhalb einer anderen Klasse deklariert ist
anonyme Klasse
(lokale) klasse ohne Namen (Deklaration innerhalb eines Blocks)
package
Schlüsselwort, Festlegung eines Namenspace für Klassen
(block)lokale Variable
Variable in einem Block(Sichtbarkeitsbereich)
Laufzeitumgebung
Ablaufumgebung für kompilierte Java Programme (Bytecode)
Zuweisung
Wert eines Ausdrucks wird in einer Variablen gespeichert
Typen
Menge von Werten (Basisdatentyp, Objekt, null)
Typisierung
Zuordnung von Datentypen an Variablen, Sicherstellung der korrekten Verwendung
Typsicherheit
Aufgabe des Compilers, Sicherstellung der Verwendung von Typen
Polymorphie
Programmteile sind für mehrere Typen einsetzbar
Subtyping
Ordnung auf den Datentypen ->Vererbung
Interface
Schlüsselwort zur Deklaration eines Schnittstellentyps
dynamisches Binden
Methodenzuordnung, die erst zur Laufzeit stattfindet
Cast
Typkonvertierung, in Java eher Zusicherung Datentyp
Deklarationstyp
Datentyp bei der Deklaration (-> im Compiler)
Enum
Datentyp, Aufzählungstyp
Exception
Datentyp, Ausnahmen
Vererben
Übertragen von Programmteilen an abgeleitete Klassen
Überschreiben
Methoden mit gleichem Namen (SuperklasseSubklasse)
Überladen
Mehrere Methoden mit gleichem Namen und unterschiedlicher Signatur
ZugriffsModifikatoren public - wer kann sehen? Klasse A selbst Klasse B im gleichen Paket Subklasse C im gleichen Paket Subklasse D in einem anderen Paket Klasse E in einem anderen Paket
alle
ZugriffsModifizierer protected - wer kann sehen? Klasse A selbst Klasse B im gleichen Paket Subklasse C im gleichen Paket Subklasse D in einem anderen Paket Klasse E in einem anderen Paket
Klasse A selbst
Klasse B im gleichen Paket
Subklasse C im gleichen Paket
Subklasse D in einem anderen Paket, wenn von A geerbt
ZugriffsModifizierer ohne - wer kann sehen? Klasse A selbst Klasse B im gleichen Paket Subklasse C im gleichen Paket Subklasse D in einem anderen Paket Klasse E in einem anderen Paket
paketlokal, dh.
Klasse A selbst
Klasse B im gleichen Paket
Subklasse C im gleichen Paket
ZugriffsModifizierer private - wer kann sehen? Klasse A selbst Klasse B im gleichen Paket Subklasse C im gleichen Paket Subklasse D in einem anderen Paket Klasse E in einem anderen Paket
nur Klasse a selbst
native
Der Modifier native dient der Einbindung von plattformspezifischem Binärcode. Native Methoden einer Klasse werden ähnlich wie bei abstrakten Methoden im Klassenrumpf nur deklariert, die Implementierung befindet sich aber in einer externen Bibliothek, z.B. in einer DLL (dynamic link libary), die etwa in C implementiert sein könnte
Serialisierung
- Die Umwandlung einer Objektdarstellung im Speicher in einem Byte-Strom nennt sich Serialisierung.
- Diese benötigt man, wenn man Objekte in eine Datei speichern oder über ein Netzwerk transportieren möchte.
Transistent
Die bei einer Serialisierung nicht bennötigten Referenzvariablen sollte man mit dem Modifier transistent kennzeichnen. Damit zeigt man für den Fall der Serialisierung an, dass das Feld kein Bestandteil des persistenten Zustands eines Objektes ist und somit nicht übertragen werden muss.
volatile
kritische Variable
- Mit dem Modifier volatile kann man bei einem Feld (Instanz- oder Klassenvariable) angeben, dass dieses in synchronisierten Threads benutzt wird und daher von Compiler-Optimierungen auszuschließen ist.
- Java ermöglicht, dass Threads, die auf gemeinsame Variablen zugreifen, von diesen Variablen private Arbeitskopien halten. Diese Arbeitskopien brauchen mit den Orginalfassungen im gemeinsamen Hauptspeicher nur an vorgeschriebenen Synchronisationspunkten abgestimmt zu werden (beim Sperren oder Freigeben von Objekten). Neben der Sperre der Variablen zur exklusiven Nutzung durch einen Thread, gibt es die Möglichkeit, das Datenfeld als volatile zu deklarieren. In diesem Fall muss ein Thread seine Arbeitskopie des Datenfeldes mit der Orginalfassung bei jedem Zugriff auf die Variable abstimmen
CORBA
common object request broker architecture
- Corba-Programme sind verteilte Anwendungen, wobei der Zugriff auf Remote-Komponenten transparent erfolgt, d.h. der Anwender wie auch der Programmierer brauchen nicht darauf zu achten, dass das angesprochene Business-Objekt(nicht) lokal vorhanden ist. Die gesamte Infrastruktur (Lokalisierung von Objekten, Transaktionssicherheit, Persistenz, Umwandlung in verschiedene Datenformate, Schnittstellen zu unterschiedlichen Programmiersprachen,…) wird bereitgestellt.
- Auf der Client- und auf der Serverseite ist ein ORB vorhanden, der wie ein Software-Bus funktioniert und die Daten zwischen Clients und ein oder mehreren Servern überträgt. Dabei spielt die Programmiersprache keine Rolle, da das Übertragungsprotokoll IIOP (Internet Inter-ORB Protocol) eine eigene Datenrepräsentation benutzt. Über den „Naming Service“ kann der Client das gewünschte Server-Objekt lokalisieren.
Socket
- Ein Socket ist ein Kommunikationsendpunkt eines Rechners und identifiziert sich durch die IP-Adresse des Rechners und eine Portnummer.
- Ein Objekt der Klasse Socket ermöglicht es, Objekte, die als Input- bzw. Output-Stream referenziert werden, über TCP oder darauf aufsetzende Protokolle zu übertragen.
RMI remote method invocation
- ist der Java-Mechanismus zur Erstellung von verteilten Anwendungen
- Aufwendige Applikationslogik und große Klassen müssen nicht auf dem Client geladen und dort ausgeführt werden, sondern verbleiben auf einem leistungsstarken Applikationsserver. Auf der Client-Seite liegt kein vollständiges Objekt, sondern nur ein Stellvertreterobjekt, das Stub (Stummel) oder Proxy genannt wird. Das Gegenstück Skeleton, befindet sich auf dem Server
Unterschied equals und ==
Der Unterschied ist, dass equals die Inhalte der Objekte vergleicht und == nachprüft, ob es sich um das selbe Objekt handelt.
Wodurch zeichnen sich Programmgerüste aus?
Ein Programmgerüst ist ein erweiterbares und anpassbares System von Klassen, das für einen allgemeinen, übergeordneten Aufgabenbereich eine Kernfunktionalität mit entsprechenden Bausteinen bereitstellt.
Was bedeutet anpassbar im Bezug auf AWT als Framework
Das AWT erlaubt die Anpassung der vordefinierten Komponenten, um z.B. die Darstellung auf dem Display des Benutzers oder das Verhalten der Komponenten anzupassen.
Was bedeutet erweiterbar im Bezug zur AWT als Framework
Das AWT erlaubt die Definition eigener Komponenten, die selbst bei der Implementierung verschiedener Benutzeroberflächen wiederverwendet werden können
Was bedeutet „System von Klassen“ im Bezug auf die AWT als Framework?
Die einzelnen Klassen des AWT sind eng miteinander gekoppelt. Um ihre eigene Aufgabe zu erledigen, müssen sie in der Regel viele Nachrichten mit Instanzen anderer Klassen austauschen, da sie von ihren Funktionalitäten abhängig sind.
Was bedeutet „allgemeiner, übergeordneter Aufgabenbereich“ im Bezug auf die AWT als Framework?
Das AWT unterstützt die Implementierung von Benutzeroberflächen im Allgemeinen, ohne Details z.B. zu ihrem Aufbau festzulegen.
Was bedeutet Kernfunktionalität im Bezug auf die AWT als Framework?
Das AWT selbst bietet keine vordefinierte Benutzeroberfläche an, sondern lediglich die Bestandteile, um Elemente zu definieren, zu positionieren oder die Interaktion der Elemente festzulegen. Erst durch eine individuelle Konfiguration von Instanzen verschiedener Klassen entsteht eine darstellbare Benutzerschnittstelle
aktueller Parameter
Parameter, der durch einen Methodenaufruf übergeben wird
formaler Parameter
Referenzparameter, der in der Methodensignatur deklariert ist
Warum muss die main-Methode als Klassenmethode(also mit dem Schlüsselwort static) deklariert werden?
Beim Start eine Java-Programms existieren zunächst keinerlei Objekte. Die Existenz eines Empfängerobjekts ist aber Voraussetzung, um eine Instanzmethode (also eine nicht-statische Methode) der jeweiligen Klasse aufzurufen. Eine statische Methode hingegen kann auch ohne Empfängerobjekt aufgerufen werden und steht damit sofort beim Start des Programms zum Aufruf zur Verfügung
Warum ist das Schlüsselwort void in der main-methode notwendig?
Eine Main-Methode darf keinen Rückgabewert haben. An die Stelle des Ergebnisstyps tritt dann das Schlüsselwort void.
Wozu dient der Parameter args in der main-Methode? Warum ist er mit einem String-Array typisiert?
Beim Start eines Java-Programms mit Hilfe des Betriebssystems können dem Programm eine beliebige Anzahl von Argumenten (Programmparameter) übergeben werden. Jedes Argument besteht aus einer Zeichenkette und wird über die entsprechende Stelle des Arrays verfügbar gemacht.
Aus welchen Einheiten besteht ein Java Programm und woher können sie stammen?
Ein Java Programm besteht aus einer Menge von Klassen. Dies können einserseits benutzergeschriebene Klassen, andererseits Bibliotheksklassen sein.
Welche Möglichkeiten gibt es, Klassen zu organisieren? Welche Vorteile hat eine sorgfältige Organisation der Klassen?
In Java können Klassen in sogenannten Paketen organisiert werden. Jedes Paket besitzt einen eindeutigen Namen und enthält Übersetzungseinheiten, die jeweils einer Datei mit der Namenserweiterung java entsprechen.
Vorteile:
- Erleichterung des Verständnisses von und der Orientierung in der Implementierung des Softwaresystems.
- Verbesserung der Wartbarkeit, indem eine Organisation gewählt wird, die die Abhängigkeiten der Klassen wiederspiegelt.
- Steuerung der Zugriffsrechte, indem der Zugriff auf Einheiten eines Pakets aus anderen Paketen heraus durch die gezielte Definition von Sichtbarkeiten unterbunden wird.
- Getrennte Übersetzbarkeit von Teilmengen der Einheiten, aus denen das Softwaresystem besteht.
Wahr oder Falsch
Die Modularisierung von Programmen ist vor allem für die Ausführungsgeschwindigkeit des Programms von Bedeutung
falsch
Wahr oder Falsch
Es ist unter anderem auch deswegen wichtig, die Teile eines Programmes zu organisieren, damit ein Entwickler sich in der Implementierung leicht zurecht finden kann
wahr
Wahr oder Falsch
Die Dauer der Übersetzung kann durch die Wahl einer geeigneten Modularisierung des Programms verkürzt werden
wahr
Wahr oder Falsch
Die Syntax für Pakete in Java lautet
package einName {/* Deklaration der Elemente des Pakets}
falsch
Wahr oder Falsch
Java erlaubt es, ein und dieselbe Klasse gleichzeitig in mehreren Paketen zu platzieren
falsch
Wahr oder Falsch
Wenn in Java in einer Klasse c des Pakets p eine andere Klasse D aus dem Paket q verwendet werden soll, dann muss diese stets importiert werden.
falsch
Wahr oder Falsch
Mit einem Wildcardzeichen können mit einer einzelnen import-Anweisung alle öffentlichen Typen eines Paketes importiert werden
wahr
Wahr oder Falsch
Eine als private deklarierte Klasse c des Pakets p kann in einer Klasse eines anderen Pakets q verwendet werden, wenn sie mit voll qualifiziertem Namen importiert wird
falsch
Wahr oder Falsch
import-Anweisungen dürfen an einer beliebigen Stelle innerhalb einer Java-Klasse stehen
falsch
Wahr oder Falsch
Wenn zwei Klassen p.C und q.C den gleichen Namen C haben, können diese in einem dritten Paket r nich parallel verwendet werden.
falsch
Wahr oder Falsch?
Das Schlüsselwort this darf unmittelbar innerhalb einer statischen Methode nicht verwendet werden
Wahr
Wahr oder Falsch?
Das Schlüsselwort this darf unmittelbar innerhalb eines Konstruktors nicht verwendet werden
falsch
Wahr oder Falsch?
Eine abstrakte Klasse braucht nicht alle Methoden zu implementieren, die durch die von ihr implementierten Interfaces vorgegeben sind
wahr
Wahr oder Falsch?
Alle Methoden eines Interface sind (gegebenenfalls implizit) public
wahr
Wahr oder Falsch?
Auf als protected deklarierte Attribute und Methoden darf ausschießlich aus demselben Typen und den Subtypen des jeweiligen Typs zugegriffen werden
falsch
Wahr oder Falsch?
Der Bytecode eines kompilierten Java-Programmes ist unabhängig von der jeweiligen Rechnerarchitektur und des Betriebssystems, auf welchem das Programm laufen kann
wahr
Wahr oder Falsch?
Die virtuelle Maschine ist unabhängig von der jeweiligen Rechnerarchitektur und des Betriebssystems, auf welchem sie läuft
falsch
Wahr oder Falsch?
Ein als final deklariertes Attribut referenziert nach der erstmaligen Initialisierung stets über die gesamte Programmdauer inweg dasselbe Objekt
wahr
Wahr oder Falsch?
Eine als final deklarierte Methode liefert nach der ersten Ausführung stets über die gesamte Programmdauer hinweg denselben Wert als Rückgabewert
falsch
Wahr oder Falsch?
Weder eine abstrakte Klasse noch ein Interface lässt sich instanziieren
wahr
Wahr oder Falsch?
Kommunikation über Nachrichten ist asynchron
wahr
Wahr oder Falsch?
Entfernte Methodenaufrufe zählen zu den synchronen Kommunikationsmitteln
wahr
Wahr oder Falsch?
Ein Vorteil von Stromklassen ist, dass sie releativ einfach hintereinandergeschachtelt werden können
Wahr
Wahr oder Falsch?
Bei einer Serialisierung ist di eAusgabe eine Menge von Klassen, die innerhalb eines Objektgeflechts erreichbar sind
falsch
Wahr oder Falsch?
An welche von zwei (passenden) überladenen Methoden ein Methodenaufruf bindet, wird zur Laufzeit entschieden
falsch
Wahr oder Falsch?
Es kann nur an überschreibene Methoden dynamisch gebunden werden
wahr
Wahr oder Falsch?
Innerhalb einer statischen Methode kann niemals eine nichtstatische Methode aufgerufen werden
falsch
Wahr oder Falsch?
in Java hat (außer object) jede Klasse genau einen unmittelbaren Supertypen
falsch
Wahr oder Falsch? Das Programm class x {Object o = „x“;} kompiliert fehlerfrei
wahr
Wahr oder Falsch? Das Programm class x {String o = new Object();} kompiliert fehlerfrei
falsch
Zugriffsmethoden
Getter und setter
Erklären Sie kurz den Begriff „Überschreiben von Methoden“
Eine von einer Superklasse an die Subklasse verebte Methode kann in der Subklasse durch eine Methode gleicher Signatur ersetzt werden. Dabei „überschreibt“ die Subklassen-Methode die Superklassen-Methode und kann eine komplett neue Implementierung besitzen.
Welches Java-Schlüsselwort muss wie verwendet werden, wenn Sie aus einer überschreibenden Methode auch auf die Implementierung der überschriebenen Methode zugreifen wollen?
Dies ist in Java durch Voranstellen des Schlüsselworts super möglich. Eine Methode m der Superklasse kann mittels super.m() aus dem Rumpf der überschreibenden Methode aufgerufen werden.
Aus welchen Elementen kann eine Interface-Deklaration bestehen?
(teilweise optionale) Zugriffsmodifikatoren;
Name des Interfaces;
eine optionale Liste von Typparametern, ggf. mit Schranken;
eine optionale Liste von Namen von Interfaces (als Supertypen), die dieses Interfaces erweitert;
benannte Konstanten, d.h. final deklarierte statische Felder;
erweiterte Methodensignaturen, die durch Klassen, die dieses Interface als Supertyp deklarieren, implementiert werden müssen.
Einer Ihrer Kollegen sagt Ihnen: „Interfaces in Java sind überflüssig. Statt ihnen könnte man in Java genauso abstrakte Klassen verwenden.“ Was sagen Sie dazu? Begründen Sie!
Zwar ist es möglich, abstrakte Klassen zur Deklaration der öffentlichen Schnittstelle von Objekten zu verwenden; allerdings erlaubt Java aufgrund der fehlenden Mehrfachvererbung nicht, zu einer Klasse mehrere (abstrakte) Superklassen zu spezifizieren. In der Konsequenz könnte jede Klasse nur einen direkten Supertyp haben. Dahingegen können zu einer Klasse mehrere Interfaces als Supertypen spezifiziert werden, sodass eine Klasse auch mehrere direkte Supertypen haben kann.
Statischen Methoden fehlt ebenso wie statischen inneren Klassen eine Eigenschaft, die den nichtstatischen Methoden bzw. nichtstatischen inneren Klassen implizit gegeben ist. Welche ist das?
Nichtstatische Methoden und nichtstatische innere Klassen haben eine implizite Referenz (bei Methoden auch impliziter Parameter genannt) auf das this-Objekt (auch self-Objekt genannt).
Unbennante Konstanten
Werte, Zeichen, z.B. 42, “Hallo”
Wozu dienen Interfaces?
Durch ein Interface kann eine öffentliche Schnittstelle als Typ definiert werden. Klassen können Interfaces als Supertypen angeben und damit zusagen, dass ihre Instanzen diese Schnittstelle bedienen können.
Wozu dienen abstrakte Klassen?
Abstrakte Klassen dienen dazu, von mehreren Subtypen gemeinsam genutzte Teile der Implementierung an einer Stelle zusammenzufassen und Programme dadurch pflegeleichter zu machen.
Wieso erlaubt der Java-Compiler es nicht, eine Methode einer abstrakten Klasse sowohl abstract als auch private zu deklarieren?
Eine Methode, welche abstract deklariert ist, verfügt über keine Implementierung. Durch ihre Deklaration wird gewissermaßen bekannt gegeben, dass eine Methode mit dieser Signatur auf dem Objekt aufgerufen werden kann. Welcher Code beim Aufruf ausgeführt werden soll, ist jedoch nicht definiert und muss erst in den Subklassen festgelegt werden. Dies geschieht, indem die abstrakte Methodendeklaration überschrieben und eine Implementierung angegeben wird. Methoden, welche private deklariert sind, sind jedoch in den Subklassen nicht sichtbar, sodass sie insbesondere auch nicht zum Überschreiben zur Verfügung stehen. Für abstract deklarierten Methoden mit private Sichtbarkeit könnte so niemals eine Implementierung angegeben werden und die abstrakte Klasse wäre nutzlos.
Anstatt eines Interfaces könnte man auch eine abstrakte Klasse deklarieren, in der alle Methoden öffentlich und abstrakt sind. Wieso kann man in Java auf Interfaces dennoch nicht verzichten?
Zu jeder Klasse kann jeweils nur genau eine Superklasse angegeben werden. Ohne Interfaces könnte eine Klasse so lediglich einen einzigen direkten Supertyp haben. Dies bedeutet jedoch eine zu starke Einschränkung für die Entwicklung großer Softwaresysteme. Durch Interfaces ist es hingegen möglich, zu jeder Klasse mehrere Supertypen anzugeben, sodass Instanzen einer Klasse gleichzeitig mehrere Supertypen haben können, die selbst in keiner Subtypbeziehung zueinander stehen. Damit stellen sie eine wichtige Voraussetzung für die Umsetzung von Polymorphie in Java dar.
Wahr oder falsch
static und final können niemals gemeinsam verwendet werden.
Falsch
Wahr oder falsch
Jede beliebige Klasse darf auch static deklariert werden.
Falsch
Wahr oder falsch
Ein Attribut, welches final deklariert ist, muss stets an der Deklarationsstelle initialisiert werden.
Falsch
Wahr oder falsch
Eine Methode, die final deklariert ist, kann in Subklassen der definierenden Klasse nicht überschrieben werden.
Wahr
Wahr oder falsch
Wird eine Klasse als final deklariert, bedeutet dies, dass sie ausschließlich über final deklarierte Attribute verfügen darf.
Falsch
Wahr oder falsch
Attribute, die in einem Interface deklariert werden, sind implizit static und final.
Wahr
Wahr oder falsch
Ein typisches Beispiel für eine final deklarierte Klasse des JDK ist java.lang.Object.
Falsch
Wahr oder falsch
In der Implementierung von anonymen Klassen, die innerhalb von Methodenrümpfen definiert werden, darf nur dann auf lokale Variablen des Rumpfes zugegriffen werden, wenn diese Variablen final sind.
Wahr
Wahr oder falsch
Methoden, die static deklariert sind, werden nicht dynamisch gebunden.
Wahr
Wahr oder falsch
Jeder Konstruktor ist implizit static. Man kann das Schlüsselwort static also auch explizit bei jeder Konstruktordeklaration mit angeben.
Falsch
Ein C++-Entwickler vermisst die Polymorphie, die in C++ mit Mehrfachvererbung einhergeht, in Java. Welche Alternative bzw. welchen Kompromiss können Sie ihm in Java anbieten?
(Abs. 3.3.2) In Java gibt es keine Mehrfachvererbung – eine Klasse kann jeweils nur eine Klasse als ihre Superklasse deklarieren. Um dennoch zu einer Klasse mehrere Supertypen anzugeben, müssen diese als Interfaces definiert werden, von denen Klassen beliebig viele implementieren dürfen. So ist es möglich, dass Instanzen einer Klasse gleichzeitig mehrere, in keiner Subtypbeziehung stehenden Typen haben können.
Ein C#-Entwickler vermisst Methodentypen, um einen Algorithmus als aktuellen Parameter einer anderen Methode anzugeben. Welche Alternative bzw. welchen Kompromiss können Sie ihm in Java anbieten?
(Abs. 3.2.6.3) In Java ist es nicht möglich, eine Methode direkt zu referenzieren. Um einen Algorithmus dennoch in einer Variable referenzieren zu können, kann man eine Schnittstelle definieren, die genau eine Methode deklariert. Verschiedene Klassen (typischerweise anonyme Klassen) können diese Schnittstelle implementieren und jeweils eine individuelle Implementierung dieser Methode bereitstellen. An den Stellen, an denen in anderen Programmiersprachen einen Zeiger auf eine Methode verwendet wird, wird nun eine Referenz auf eine Instanz einer solchen Klasse übergeben.
.
.
Was bezeichnet this im Rumpf einer Methode?
this bezeichnet im Rumpf einer Methode das Objekt, dem die Nachricht geschickt wurde, die zur Ausführung der Methode führte, auch als “impliziter Parameter” des Methodenaufrufs bezeichnet.
Was bezeichnet this innerhalb eines Konstruktors?
In einem Konstruktor bezeichnet this das Objekt, das gerade initialisiert wird.
An welchen Stellen im Programm ist ein Aufruf this() möglich und was bedeutet er?
Der Ausdruck this() ruft einen anderen (in diesem Fall parameterlosen) Konstruktor desselben Objekts auf. Er muss der erste Ausdruck innerhalb eines Konstruktors sein.
Warum führt die Verwendung von this innerhalb des Rumpfs einer statischen Methode (mit Ausnahme von Konstruktoren) zu einem Compilerfehler?
this bezeichnet im Rumpf einer Methode das Objekt, dem die Nachricht geschickt wurde. Statische Methoden werden aber nicht auf einem konkreten Objekt, sondern nur auf einer Klasse (bzw. Typ) aufgerufen, weswegen die Verwendung von this hier keinen Sinn ergibt.
Was können abstrakte Klassen an Subklassen vererben?
Abstrakte Methoden ebenso wie jede andere Deklaration, die auch von nicht abstrakten Klassen vererbt wird (Attribute, Methoden, innere Klassen…)
Wozu können abstrakte Klassen verwendet werden?
Abstrakte Klassen können verwendet werden, um gemeinsame Implementierungsteile zukünftiger Subtypen an einer Stelle zusammenzufassen und damit die Programme kleiner und pflegeleichter zu machen.
Beispiel: while-Schleife, die Iterable ausnutzt.
Iterator iterator = liste.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + “ “);
}