FunktionalePro I Flashcards
Was ist der Unterschied zwischen Assembler und Maschinensprache
Maschinensprache besteht aus binären Codes, die direkt von der Hardware ausgeführt werden können. Assembler ist eine symbolische Darstellung der Maschinensprache, die von einem Assembler in Maschinensprache übersetzt wird. Assembler ist also eine höhere Ebene als Maschinensprache.
Die Anweisung =
Datenbeschreibung =
Eine Anweisung = ein Maschinenbefehl
Datenbeschreibung = Platzreservierung im Hauptspeicher
Code vs. Daten
Code: Sind eine Reihe von Anweisungen oder Befehlen
Daten: Sind Informationen die in einem Computer gespeichert sind
Wie kann Merfachvererbung in Java implementiert werden
Default-Implementierung zusammen mit einer abstrakten Methode zur Datenhaltung
Rückwärtskompatibilität:
Default-Methoden können verwendet werden um existierende Interfaces zu erweitern ohne dass bisherige Programm zu verändert werden müssen
Schnittstellen eigenschaften
- Dürfen keine Methoden mit Rümpfen enthalten
- Dürfen keinen Zustand speichern, Objektvariablen verboten
Attribute einer Schnittstelle sind implizit public static final und somit Konstant
Geschachtelte Klassen vs. Innere anonyme Klasse
Der Hauptunterschied zwischen geschachtelten Klassen und inneren anonymen Klassen besteht darin, dass geschachtelte Klassen eine explizite Klassendefinition haben und wiederverwendbar sind, während innere anonyme Klassen keine separate Klassendefinition haben und nur einmal verwendet werden können.
Wann sind Lambdas geeignet ?
Sie sind nützlich, wenn eine Funktion nur an einer Stelle im Code benötigt wird und nicht separat definiert werden muss.
Wozu werden Lambdas genutzt?
Lambdas werden verwendet, um anonyme Funktionen zu erstellen, die in anderen Funktionen oder Ausdrücken verwendet werden können.
Implementierung von Schnittstellen
Gibt es zu jeder Schnittstelle eine Lambda Ausdruck?
nein
Wie sicht eine Funktionale Schnittstelle aus?
Besitzt nur eine abstrakte Methode
Andere statische Methoden oder Default-Methoden stören nicht
Wovon hängt bei Lambda-Ausdrücken der Typ ab?
vom jeweiligen Kontext
Worauf sollte man bei der Übersetzung einer Funktionalen Schnittstelle in eine Lambda Ausdruck achten
Auf die Überladenen Methoden mit Parameter, stattdessen unterschiedliche Namen verwenden
Lambda Ausdrücke sind Objekte …
aber sie erben nicht von der Klasse Object
Lambda Ausdrücke können als Objekte behandelt werden …
aber sie erben nicht die Methoden und Eigenschaften der Klasse Object
Wann eignet sich eine Schnittstelle eine Funktionale Schnittstelle zu werden
wenn sie genau eine Abstrakte Klasse hat
Annotation @FunctionalInterface
Die Annotation @FunctionalInterface wird in Java verwendet, um anzuzeigen, dass ein Interface als funktionales Interface betrachtet werden soll. Ein funktionales Interface ist ein Interface, das genau eine abstrakte Methode enthält. Die Annotation dient als Hinweis für den Compiler und andere Entwickler, dass das Interface für die Verwendung mit Lambda-Ausdrücken und anderen funktionalen Programmierkonzepten geeignet ist.
Wieso sollte nicht jede Schnittstelle auch für Lambda-Ausdrücke verwendet werden
weil sie z.b. Später Weiterentwickelt werden mit mehreren abstrakten Methoden
Syntax für Lambda-Ausdrücke
(LambdaParameter) -> {Anweisungen}
Was macht Lambda was Methodenreferenzen
- Lambdas definieren Funktionen, über die wir das Programm
parametrisieren können. - Methodenreferenzen erlauben die Verwendung von vorhandenem
Code.
Wozu dienen Methodenreferenzen
Dienen zur besonders schnellen Initialisierung funktionaler Schnittstellen mit benannten Methoden