Begriffe&Co Flashcards

1
Q

Attribut

A

objektlokale Variable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Zustand

A

programmtechnisch realisiert durch Attribute, Belegung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Klassenattribut

A

Attribut einer Klasse, deklariert mit static

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Nachricht

A

Information, die an ein Objekt versandt wir dun vom Objekt verstanden sowie verarbeitet werden kann (Methode)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Methode

A

Programmcode zur Reaktion auf Nachrichten

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Lebensdauer

A

zeitliche Existenz eines Objekts

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Konstruktor

A

spezielle Methode zur Objektinitialisierung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Identität

A

Objekte sind unterschiedlich - sie haben eine Identität

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Objekt

A

Einheit Daten und Code, Instanz einer Klasse

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Referenz

A

Adresse für ein Objekt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Instanz

A

konkretes Objekt einer Klasse, erzeugt durch new

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

this

A

impliziter Parameter, self-Objekt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

alias

A

weitere Referenz auf ein Objekt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

formaler Parameter

A

an eine Methode übergebene Parameter

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Signatur einer Methode

A

Modifikatoren Ergebnistyp Methodenname(Parameterliste) throws Deklaration

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Deklaration

A

Festlegung Typ und Name (z.B. Variable)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Variable

A

Speicher für Werte

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

static

A

Schlüsselwort, Modifikator, statische Deklaration

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

final

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Feld

A

Array, Datentyp zur Speicherung von gleichen Datentypen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Initialisierung

A

Erstmalige Belegung einer Variable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Klassifizierung

A

Hierarchische Strukturierung, Zuordnung von Objekten

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Klasse

A

Beschreibung der Eigenschaften, die ein Objekt der Klasse hat

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

abstrakte Klasse

A

Klasse mit unvollständiger Implementierung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

innere Klasse

A

Klasse, die innerhalb einer anderen Klasse deklariert ist

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

anonyme Klasse

A

(lokale) klasse ohne Namen (Deklaration innerhalb eines Blocks)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

package

A

Schlüsselwort, Festlegung eines Namenspace für Klassen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

(block)lokale Variable

A

Variable in einem Block(Sichtbarkeitsbereich)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Laufzeitumgebung

A

Ablaufumgebung für kompilierte Java Programme (Bytecode)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Zuweisung

A

Wert eines Ausdrucks wird in einer Variablen gespeichert

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Typen

A

Menge von Werten (Basisdatentyp, Objekt, null)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Typisierung

A

Zuordnung von Datentypen an Variablen, Sicherstellung der korrekten Verwendung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Typsicherheit

A

Aufgabe des Compilers, Sicherstellung der Verwendung von Typen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Polymorphie

A

Programmteile sind für mehrere Typen einsetzbar

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Subtyping

A

Ordnung auf den Datentypen ->Vererbung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Interface

A

Schlüsselwort zur Deklaration eines Schnittstellentyps

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

dynamisches Binden

A

Methodenzuordnung, die erst zur Laufzeit stattfindet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Cast

A

Typkonvertierung, in Java eher Zusicherung Datentyp

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

Deklarationstyp

A

Datentyp bei der Deklaration (-> im Compiler)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

Enum

A

Datentyp, Aufzählungstyp

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

Exception

A

Datentyp, Ausnahmen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

Vererben

A

Übertragen von Programmteilen an abgeleitete Klassen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

Überschreiben

A

Methoden mit gleichem Namen (SuperklasseSubklasse)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

Überladen

A

Mehrere Methoden mit gleichem Namen und unterschiedlicher Signatur

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q
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
A

alle

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
46
Q
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
A

Klasse A selbst
Klasse B im gleichen Paket
Subklasse C im gleichen Paket
Subklasse D in einem anderen Paket, wenn von A geerbt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
47
Q
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
A

paketlokal, dh.
Klasse A selbst
Klasse B im gleichen Paket
Subklasse C im gleichen Paket

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
48
Q
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
A

nur Klasse a selbst

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
49
Q

native

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
50
Q

Serialisierung

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
51
Q

Transistent

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
52
Q

volatile

A

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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
53
Q

CORBA

A

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.
54
Q

Socket

A
  • 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.
55
Q

RMI remote method invocation

A
  • 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
56
Q

Unterschied equals und ==

A

Der Unterschied ist, dass equals die Inhalte der Objekte vergleicht und == nachprüft, ob es sich um das selbe Objekt handelt.

57
Q

Wodurch zeichnen sich Programmgerüste aus?

A

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.

58
Q

Was bedeutet anpassbar im Bezug auf AWT als Framework

A

Das AWT erlaubt die Anpassung der vordefinierten Komponenten, um z.B. die Darstellung auf dem Display des Benutzers oder das Verhalten der Komponenten anzupassen.

59
Q

Was bedeutet erweiterbar im Bezug zur AWT als Framework

A

Das AWT erlaubt die Definition eigener Komponenten, die selbst bei der Implementierung verschiedener Benutzeroberflächen wiederverwendet werden können

60
Q

Was bedeutet „System von Klassen“ im Bezug auf die AWT als Framework?

A

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.

61
Q

Was bedeutet „allgemeiner, übergeordneter Aufgabenbereich“ im Bezug auf die AWT als Framework?

A

Das AWT unterstützt die Implementierung von Benutzeroberflächen im Allgemeinen, ohne Details z.B. zu ihrem Aufbau festzulegen.

62
Q

Was bedeutet Kernfunktionalität im Bezug auf die AWT als Framework?

A

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

63
Q

aktueller Parameter

A

Parameter, der durch einen Methodenaufruf übergeben wird

64
Q

formaler Parameter

A

Referenzparameter, der in der Methodensignatur deklariert ist

65
Q

Warum muss die main-Methode als Klassenmethode(also mit dem Schlüsselwort static) deklariert werden?

A

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

66
Q

Warum ist das Schlüsselwort void in der main-methode notwendig?

A

Eine Main-Methode darf keinen Rückgabewert haben. An die Stelle des Ergebnisstyps tritt dann das Schlüsselwort void.

67
Q

Wozu dient der Parameter args in der main-Methode? Warum ist er mit einem String-Array typisiert?

A

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.

68
Q

Aus welchen Einheiten besteht ein Java Programm und woher können sie stammen?

A

Ein Java Programm besteht aus einer Menge von Klassen. Dies können einserseits benutzergeschriebene Klassen, andererseits Bibliotheksklassen sein.

69
Q

Welche Möglichkeiten gibt es, Klassen zu organisieren? Welche Vorteile hat eine sorgfältige Organisation der Klassen?

A

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:

  1. Erleichterung des Verständnisses von und der Orientierung in der Implementierung des Softwaresystems.
  2. Verbesserung der Wartbarkeit, indem eine Organisation gewählt wird, die die Abhängigkeiten der Klassen wiederspiegelt.
  3. Steuerung der Zugriffsrechte, indem der Zugriff auf Einheiten eines Pakets aus anderen Paketen heraus durch die gezielte Definition von Sichtbarkeiten unterbunden wird.
  4. Getrennte Übersetzbarkeit von Teilmengen der Einheiten, aus denen das Softwaresystem besteht.
70
Q

Wahr oder Falsch

Die Modularisierung von Programmen ist vor allem für die Ausführungsgeschwindigkeit des Programms von Bedeutung

A

falsch

71
Q

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

A

wahr

72
Q

Wahr oder Falsch

Die Dauer der Übersetzung kann durch die Wahl einer geeigneten Modularisierung des Programms verkürzt werden

A

wahr

73
Q

Wahr oder Falsch
Die Syntax für Pakete in Java lautet
package einName {/* Deklaration der Elemente des Pakets}

A

falsch

74
Q

Wahr oder Falsch

Java erlaubt es, ein und dieselbe Klasse gleichzeitig in mehreren Paketen zu platzieren

A

falsch

75
Q

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.

A

falsch

76
Q

Wahr oder Falsch
Mit einem Wildcardzeichen können mit einer einzelnen import-Anweisung alle öffentlichen Typen eines Paketes importiert werden

A

wahr

77
Q

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

A

falsch

78
Q

Wahr oder Falsch

import-Anweisungen dürfen an einer beliebigen Stelle innerhalb einer Java-Klasse stehen

A

falsch

79
Q

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.

A

falsch

80
Q

Wahr oder Falsch?

Das Schlüsselwort this darf unmittelbar innerhalb einer statischen Methode nicht verwendet werden

A

Wahr

81
Q

Wahr oder Falsch?

Das Schlüsselwort this darf unmittelbar innerhalb eines Konstruktors nicht verwendet werden

A

falsch

82
Q

Wahr oder Falsch?
Eine abstrakte Klasse braucht nicht alle Methoden zu implementieren, die durch die von ihr implementierten Interfaces vorgegeben sind

A

wahr

83
Q

Wahr oder Falsch?

Alle Methoden eines Interface sind (gegebenenfalls implizit) public

A

wahr

84
Q

Wahr oder Falsch?
Auf als protected deklarierte Attribute und Methoden darf ausschießlich aus demselben Typen und den Subtypen des jeweiligen Typs zugegriffen werden

A

falsch

85
Q

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

A

wahr

86
Q

Wahr oder Falsch?
Die virtuelle Maschine ist unabhängig von der jeweiligen Rechnerarchitektur und des Betriebssystems, auf welchem sie läuft

A

falsch

87
Q

Wahr oder Falsch?
Ein als final deklariertes Attribut referenziert nach der erstmaligen Initialisierung stets über die gesamte Programmdauer inweg dasselbe Objekt

A

wahr

88
Q

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

A

falsch

89
Q

Wahr oder Falsch?

Weder eine abstrakte Klasse noch ein Interface lässt sich instanziieren

A

wahr

90
Q

Wahr oder Falsch?

Kommunikation über Nachrichten ist asynchron

A

wahr

91
Q

Wahr oder Falsch?

Entfernte Methodenaufrufe zählen zu den synchronen Kommunikationsmitteln

A

wahr

92
Q

Wahr oder Falsch?

Ein Vorteil von Stromklassen ist, dass sie releativ einfach hintereinandergeschachtelt werden können

A

Wahr

93
Q

Wahr oder Falsch?

Bei einer Serialisierung ist di eAusgabe eine Menge von Klassen, die innerhalb eines Objektgeflechts erreichbar sind

A

falsch

94
Q

Wahr oder Falsch?

An welche von zwei (passenden) überladenen Methoden ein Methodenaufruf bindet, wird zur Laufzeit entschieden

A

falsch

95
Q

Wahr oder Falsch?

Es kann nur an überschreibene Methoden dynamisch gebunden werden

A

wahr

96
Q

Wahr oder Falsch?

Innerhalb einer statischen Methode kann niemals eine nichtstatische Methode aufgerufen werden

A

falsch

97
Q

Wahr oder Falsch?

in Java hat (außer object) jede Klasse genau einen unmittelbaren Supertypen

A

falsch

98
Q
Wahr oder Falsch?
Das Programm class x {Object o = „x“;} kompiliert fehlerfrei
A

wahr

99
Q
Wahr oder Falsch?
Das Programm class x {String o = new Object();} kompiliert fehlerfrei
A

falsch

100
Q

Zugriffsmethoden

A

Getter und setter

101
Q

Erklären Sie kurz den Begriff „Überschreiben von Methoden“

A

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.

102
Q

Welches Java-Schlüsselwort muss wie verwendet werden, wenn Sie aus einer überschreibenden Methode auch auf die Implementierung der überschriebenen Methode zugreifen wollen?

A

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.

103
Q

Aus welchen Elementen kann eine Interface-Deklaration bestehen?

A

 (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.

104
Q

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!

A

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.

105
Q

Statischen Methoden fehlt ebenso wie statischen inneren Klassen eine Eigenschaft, die den nichtstatischen Methoden bzw. nichtstatischen inneren Klassen implizit gegeben ist. Welche ist das?

A

Nichtstatische Methoden und nichtstatische innere Klassen haben eine implizite Referenz (bei Methoden auch impliziter Parameter genannt) auf das this-Objekt (auch self-Objekt genannt).

106
Q

Unbennante Konstanten

A

Werte, Zeichen, z.B. 42, “Hallo”

107
Q

Wozu dienen Interfaces?

A

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.

108
Q

Wozu dienen abstrakte Klassen?

A

Abstrakte Klassen dienen dazu, von mehreren Subtypen gemeinsam genutzte Teile der Implementierung an einer Stelle zusammenzufassen und Programme dadurch pflegeleichter zu machen.

109
Q

Wieso erlaubt der Java-Compiler es nicht, eine Methode einer abstrakten Klasse sowohl abstract als auch private zu deklarieren?

A

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.

110
Q

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?

A

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.

111
Q

Wahr oder falsch

static und final können niemals gemeinsam verwendet werden.

A

Falsch

112
Q

Wahr oder falsch

Jede beliebige Klasse darf auch static deklariert werden.

A

Falsch

113
Q

Wahr oder falsch

Ein Attribut, welches final deklariert ist, muss stets an der Deklarationsstelle initialisiert werden.

A

Falsch

114
Q

Wahr oder falsch

Eine Methode, die final deklariert ist, kann in Subklassen der definierenden Klasse nicht überschrieben werden.

A

Wahr

115
Q

Wahr oder falsch
Wird eine Klasse als final deklariert, bedeutet dies, dass sie ausschließlich über final deklarierte Attribute verfügen darf.

A

Falsch

116
Q

Wahr oder falsch

Attribute, die in einem Interface deklariert werden, sind implizit static und final.

A

Wahr

117
Q

Wahr oder falsch

Ein typisches Beispiel für eine final deklarierte Klasse des JDK ist java.lang.Object.

A

Falsch

118
Q

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.

A

Wahr

119
Q

Wahr oder falsch

Methoden, die static deklariert sind, werden nicht dynamisch gebunden.

A

Wahr

119
Q

Wahr oder falsch
Jeder Konstruktor ist implizit static. Man kann das Schlüsselwort static also auch explizit bei jeder Konstruktordeklaration mit angeben.

A

Falsch

119
Q

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?

A

(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.

120
Q

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?

A

(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.

120
Q

.

A

.

121
Q

Was bezeichnet this im Rumpf einer Methode?

A

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.

122
Q

Was bezeichnet this innerhalb eines Konstruktors?

A

In einem Konstruktor bezeichnet this das Objekt, das gerade initialisiert wird.

123
Q

An welchen Stellen im Programm ist ein Aufruf this() möglich und was bedeutet er?

A

Der Ausdruck this() ruft einen anderen (in diesem Fall parameterlosen) Konstruktor desselben Objekts auf. Er muss der erste Ausdruck innerhalb eines Konstruktors sein.

124
Q

Warum führt die Verwendung von this innerhalb des Rumpfs einer statischen Methode (mit Ausnahme von Konstruktoren) zu einem Compilerfehler?

A

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.

125
Q

Was können abstrakte Klassen an Subklassen vererben?

A

Abstrakte Methoden ebenso wie jede andere Deklaration, die auch von nicht abstrakten Klassen vererbt wird (Attribute, Methoden, innere Klassen…)

126
Q

Wozu können abstrakte Klassen verwendet werden?

A

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.

127
Q

Beispiel: while-Schleife, die Iterable ausnutzt.

A

Iterator iterator = liste.iterator();
while (iterator.hasNext()) {
System.out.print(iterator.next() + “ “);
}