uio--WebPageMain-Module
JAVA-B1 Klassen public class instance System.out.println() {@link Klasse} {@param Klasse} getClass().getSimpleName() extends Objekte Interfaces FAQ classes Erweitern von Klassen mit extends finale Konstanten (@see Finalisierung von Klassen ) Polymorphismus Nested Classes @Override Annotation innere Klassen lokale Klassen anonyme Klassen Lamda Expressions FAQ Nested Classes

Klassen im Detail Overview return-Statements return & void return bei primitiven Typen return bei Objekten return-Statements von Methoden mit/ohne return Rückkehr ohne return Rückkehr über return throws Exception Kopie oder Referenz Covariant Return Types this this mit Objekt-Feldern this mit Methoden und im Konstuktor Zugriffsmodifikatoren public protected private Class Member static public static final PI Initialisierung Initialisierung von Feldern Initialisierung von Klassenfeldern Static Block Lambda-Expressions Methoden-Referenzen

Enumerationen und enum-Types Enumerationskonstanten Enumerationen mit Werten Samstag/Sonnabend Example @! Enumerationen FAQ Enum @!Descr/Exmpl/Index

Interfaces Einfache Interfaces (Marker) Interfaces mit Methoden Default-Methoden static Interfaces FAQ Vererbung / Inheritance Vererbung / Inheritance super Keyword method-overriding-and-hiding hiding-of-fields object-as-superclass Finalisierung Finale Klassen und Methoden Finale Methoden Finale Utility-Klasse "IdGenerator" "Template-Methode"-Pattern DataProcessor process(){ r(), p(), w() } Composition-over-Inheritance abstract Abstrakte Klassen und Methoden Beispiel Abstrakte Klassen und Methoden abstract Implementierungsklassen FAQ Vererbung Kein this in super(..) Verhindern Überschreiben von Membern

Generics Generische Programmierung Generische Typparameter Generische Klassen Generische Interfaces Generische Methoden Generische Felder Generische Collection (ArrayList) Diamond Operator Generische Arrays Example Beispiel "GenerischerSpeicher" Ring-Speicher-Algorithus mit generischem Array Beispiel: GenerischePerson mit Berufsgruppe Beispiel: Berufsgruppe mit Static/Non-Static Nested Classes

Modularisierung Package Overview Package Structure Package Info

Modules Overview Setup Setup Module Info

Java New Features Java 8+ Java Record Record Syntax Record Demo Herkömmliche POJOs Lösung mit Records Records Zusammenfassung

INDEX

Overview

JAVA-B1 | Overview

Abbildung: Java Tiers B

(ContentInstance ContentInstance-Java-Tiers-B)

Objektorientierung

JAVA-B1 | Objektorientierung

Mit diesem Themenblock beginnen wir eine Einführung in die sogenannte in die Objektorientierte Programmierung mit einem Einblick in Klassen, Objekte, Methode, Attribute, Members, Interfaces, Default-Methoden von Interface, Prinzipien der Vererbung, Schlüsselworten wie this, super, abstract´ sowie einen Überblick über die Verwendung von Strings, Numbers und Packages und Modulen.

Unter der Annahme, dass wir die absoluten Basics der Programmiersprache JAVA soweit verstanden haben, dass wir einfache Programme schreiben, kompilieren und ausführen können, befassen wir uns in diesem Themenblock mit der Frage, wie man eigentlich eigene Klassen programmiert. Wir werden in diesem Bereich Klassen und zugehörige Member wie Methoden, Konstruktoren und Attribute programmieren und zeigen, wie man eigene Objekte erzeugt und verwendet. Darüberhinaus werde3n wir damit befassen, wie man Klassen in anderen Klassen als Nested Class programmieren kann oder auch Enumeration verwendet.

Klassen

JAVA-B1 | Klassen

In diesem Bereich erklären wir den grundlegenden Aufbau von Klassen und wie man in einer Klasse die zugehörigen Member wie Felder, Methoden und Konstruktoren deklariert.

Die klassenbasierte Objektorientierung in Java ist beispielhaft für viele andere Programmiersprachen. Wenn Sie die objektorientierte Programmierung in JAVA verstanden haben, verstehen Sie diese auch in den meisten anderen Sprachen.

Objekte

JAVA-B1 | Objekte

In diesem Bereich befassen wir uns mit Varianten, wie man Objekte erzeugen und wie man diese VDerwenden werden kann. Wir werden Instanzen erzeugen und mit Hilfe des Dot-Operators den Zugriff auf zugehörige Member erlangen.

Klassen im Detail

JAVA-B1 | Klassen im Detail

Lambda-Expressions sind seit JAVA 15 in der Entwicklung nicht mehr wegzudenken, ermögliche Sie doch eine leichtere Lösung von Problemstellungen die mit einer herkömmlichen, auf Klassen basierten Objektorientierung so nicht möglich war.

In diesem Themenblock befasen wir uns mit einer Liste von Ansätzen, wie und wann man letztendlich zu Lambda-Ausdrücken kommt und diese erfolgreich einsetzen kann.

Interfaces

JAVA-B1 | Interfaces

Interfaces, Markerinterfaces, Interfaces mit statischen Methoden, Interfaces im Vergleich zu PHP Traits, Interfaces im Vergleich zur Mehrfachvererbung in C++, Interface im Collection Framework, Interfaces für Typkonvierungen, Interfaces für Gruppierung von Objekten verschiedener Klassen. Interfaces sind nicht wegzudenken.

Obwohl Interfaces überall in JAVA zu finden sind, ist es immer wieder überraschend, warum viele Entwickler dennoch ohne Interfaces arbeiten und immer wieder Klassen bemühen.


Unsere Inhalte sind noch nicht digitalisiert worden.


Interfaces

JAVA-B1 | Interfaces (simple)

Vererbung (fortgeschritten)

JAVA-B1 | Inheritance Advanced

In diesem Themenbereich gehen wir vertiefend auf weitere Details in Bezug auf die Syntax und Möglichkeiten in JAVA in Bezug auf die Vererbung, engl. Inheritance, ein.

Wir befassen uns mit dem Problemstellung der Mehrfachverbung, der Verwendung von super, dem Überschreiben und Verstecken von Methoden, dem Verstecken von Feldern, der Verwendung von Objekten als Superklassen, der Finalisierung von Klassen und Methoden, dem Versiegeln von Klassen, Interface und Methoden sowie der Verwendung von abstrakten Klassen und Methoden.

JAVA-B1 | Mehrfachvererbung in JAVA

Eine Mehrfachvererbung, englisch Multiple-Inheritance genannt, ist bei JAVA wie auch den meisten anderen objektorientierten Programmiersprachen in Verbindung mit den mit class deklarierten Klassen nicht ohne weiteres möglich, wenn auch es Lösungsansätze gibt.

Mehrfachvererbung bedeutet, dass eine Klasse von zwei und Klassen erben möchte, wie man das beispielsweise bei Kindern im Erben von Eigenschaften von Vater und Mutter vermuten dürfte. In der objektorientierten Programmierung darf allerdings nach nach extends in JAVA für die Erweiterung nur eine Klasse angegeben werden. Wie man es dennoch sinngemäß lösen kann, zeigen wir in diesem Themenblock.

JAVA-B1 | Finalisierung von Klassen und Methoden

In diesem Themenblock befassen wir uns mit dem Schreiben finaler Klassen und Methoden sowie Verfahren, wie man ab JAVA 17 Klassen und Methoden versiegeln kann, diesen Schutz aber für ausgewählte Klassen aber wiederum erlauben kann.

Das Finalisieren und Schützen von Klassen und Methoden ist insbesondere für Utility-Klassen sowie für Methoden zweckmäßig, welche direkt aus Konstruktoren aufgerufen werden.

JAVA-B1 | Abstrakte Klassen und Methoden

In diesem Themenblock befassen wir uns mit dem Schreiben finaler Klassen und Methoden sowie Verfahren, wie man ab JAVA 17 Klassen und Methoden versiegeln kann, diesen Schutz aber für ausgewählte Klassen aber wiederum erlauben kann.

Das Finalisieren und Schützen von Klassen und Methoden ist insbesondere für Utility-Klassen sowie für Methoden zweckmäßig, welche direkt aus Konstruktoren aufgerufen werden.

JAVA-B1 | Versiegeln von Klassen und Methoden

In diesem Themenblock befassen wir uns mit dem Schreiben finaler Klassen und Methoden sowie Verfahren, wie man ab JAVA 17 Klassen und Methoden versiegeln kann, diesen Schutz aber für ausgewählte Klassen aber wiederum erlauben kann.

Das Finalisieren und Schützen von Klassen und Methoden ist insbesondere für Utility-Klassen sowie für Methoden zweckmäßig, welche direkt aus Konstruktoren aufgerufen werden.

JAVA-B1 | FAQ Vererbung

FAQ zum Thema Vererbung in JAVA mit ausgewählten Fragen und Antworten zu verschiedenen Problemstellungen.

Warum kann man beispielsweise kein this innerhalb von super(...) aufrufen, wenn man den Konstruktor einer Superklasse während der Instanzierung der Subklasse rufen will?

Generics

JAVA-B1 | Generics

Die Generische Programmierung ist ein Verfahren bei welchem man mit Hilfe von Typ-Parametern sowohl Klassen als auch Methoden, Felder und damit auch Interfaces und vieles andere mehr generalisieren kann. Die Typen von Variablen, Parametern oder auch return-Typen werden hierbei erst zum Zeitpunkt der Instanzierung definiert.

Generische Programmierung und ein Verständnis von generischen Typparametern bildet die Grundlage für ein Verständnis der Nutzung von Java Collections. Alle Collections der Java Collection API sind generische.

Modularisierung

JAVA-B1 | Modularisierung

In diesem Themenblock zur Modularisierung befassen wir uns zuerst einmal in diesem Level nur mit dem Prinzip von Packages, Modulen, dem Import von Paketen, der Benennung von Ordnern und dergleichen, damit das Grundprinzip verstanden wurde.

HINWEIS: Die Modularisierung von Java-Anwendungen erfolgt eigentlich seit Java 8 nicht mehr nur über Packages sondern auch über Module. Darüber hinaus führt Auslagerung von Java EE Packages zu Eclipse als Jakarta oder immer mehr Integration von Packages aus Open-Source-Quellen zu der Problematik, dass man eigentlich zwingend auf Maven oder Gradle setzen muss.

JAVA-B1 | Modularisierung: Packages

Modularisierung: Packages

Der Programmcode von Java-Source-Files wird in Packages, Ordnern, Modulen und JARs gegliedert. Maßgebend für den Einstieg ist ein Verständnis der Package- und Folder-Struktur von Java-Anwendungen.

In diesem Themenblock befassen wir uns mit der Frage, wie man Packages strukturiert, gliedert, benennt, importiert und anderes mehr.

Modularisierung: Modules

JAVA-B1 | Modularisierung: Modules

Java-Module sind ein mit Java 8 / Java 9 gekommenes Features mit dessen Hilfe sich die immer mehr Packages in Module gliedern lassen.

Module sind als Container von Packages zu verstehen.

New Features

JAVA-B1 | New Features ab Java 8

Über die Jahre sind seit Java 8 einige neue Features hinzugekommen.

Die nachfolgenden Blöcke geben einen kleinen Einblick, sind decken aber nur einen Auszug ab.


Records, siehe unten.

Records

JAVA-B1 | Records

Objekte kann man in JAVA nicht nur über Klassen erzeugen sondern auch über Records, es gibt also neben «class A» auch «record A» als Alternative. Records sind für bestimmte Problemstellungen sehr praktisch.

In diesem Themenblock erläutern wir, was Records im Vergleich zu POJOs sind, wozu diese dienen, welche Vorteile Sie haben und wann man diese einsetzen sollte.

Template-Strings

JAVA-B1 | Template-Strings

Die Syntax von Template-Strings ist schnell erklärt. Was man damit jetzt anders programmieren kann, füllt vermutlich ein Buch.

Die Kurzfassung Template-Strings: Mit """...""" können jetzt String-Literale definiert werden bei welchen man Quotes wie " und ' nicht mehr maskieren muss und damit in solche Literale nun kompletten XML/HTML-Code auch mit Zeilenumbrüchen kopieren kann.


An Informationen sollte den meisten ausreichen.

FootNotes, Keywords, Tags


    Objektorientierte Programmierung

    Hinweise, Rechte, Marken

    UI ORGANIZED.

    UIO3 Es ist einfacher als Du denkst.

    Stelle noch heute Deine Anfrage.

    uio--WebPageFooter-Module