Java / Spring – Vererbung, Polymorphismus und Abhängigkeitsinjektion – Teil 2

Dies ist der zweite Teil einer Reihe von Tutorials, die sich mit den grundlegenden Themen der Java-Sprache befassen, um den Leser auf die Verwendung des Spring Framework vorzubereiten. Den ersten Teil dieser Tutorialserie finden Sie hier . In diesem Tutorial werden wir über Polymorphismus sprechen.

Was ist Polymorphismus?

Das Wort Polymorphismus kommt aus dem Griechischen “poli”, was viele bedeutet, und “morfo”, was Form bedeutet und sich allgemein darauf bezieht, auf die Fähigkeit, mehrere Formen anzunehmen. In der objektorientierten Programmierung sprechen wir über Variablen oder Referenzen, die die Form mehrerer unterschiedlicher Objekte annehmen können.

Nachdem Sie nun wissen, woher das Konzept stammt, versuchen wir, es mit der Java-Sprache in Beziehung zu setzen. Wie wir im vorherigen Tutorial gesehen haben, können wir mit dem Konzept “Heritage” eine Vater-Sohn-Beziehung zwischen zwei bestimmten Klassen herstellen:

Bild gesendet

In diesem Beispiel besteht die Vererbungsbeziehung zwischen der Dog- Klasse und der Animal- Klasse, der Cat- Klasse und der Animal- Klasse sowie der Horse- Klasse und der Animal- Klasse. Beachten Sie, dass es keine direkte Beziehung zwischen Dog , Cat und Horse gibt .

Anhand dieses Diagramms können wir sagen, dass ein Hund ein Tier ist, eine Katze ein Tier und ein Pferd ein Tier. Wenn Sie die Beziehung auf diese Weise in Java ausdrücken können, können wir sagen, dass eine Variable der Tierklasse polymorph ist, da sie die Form eines Pferdes , einer Katze oder eines Hundes annehmen kann.

Im vorherigen Tutorial haben wir auch gesehen, dass ALLE Klassen direkt oder indirekt von der Object- Klasse erben. In diesem Fall ist das Diagramm etwas vollständiger, wenn wir es folgendermaßen definieren:

See also  Grundlegendes Farbmanagement in Gimp

Bild gesendet

Dies kann sich über mehrere Ebenen erstrecken (im Wesentlichen hängt das Level-Limit von Ihrer JVM ab, liegt jedoch normalerweise über 40). Ein Tier IST also ein Objekt, eine Katze IST ein Tier und eine Katze (für Transitivität) IST ein Objekt.

Java erlaubt es dann, Klassenreferenzen in Höhepunkten dieser Struktur zu verwenden, um auf Objekte zu verweisen, die sich in der Struktur darunter befinden. Zum Beispiel:

 public static void main (String [] args) { Objekt o1 = neues Objekt (); Tier a1 = neues Tier (); Hund p = neuer Hund (); o1 = a1; o1 = p; a1 = p; Objekt o2 = neues Tier (); Objekt o3 = neuer Hund (); Tier a2 = neuer Hund (); boolean b1 = o1 == o2; boolean b2 = o1 == o3; boolean b3 = o1 == a2; if (b1 || b2 || b3) { DoNothing (); } } 

Wie Sie sehen können, kann sich ein variables Objekt auf ein Tierobjekt oder ein Hundeobjekt sowie eine tierische Variable auf ein Hundeobjekt beziehen. Die daraus abgeleitete Polymorphismus-Fähigkeit führt dazu, dass wir ein Objekt manipulieren können, ohne dass wir wissen müssen, welches Objekt genau ist. Sehen wir uns das folgende Beispiel an:

 public static void doSomething (Animal a) { a.getColorDePelo (); } 

Wenn eine Anwendung diese Methode verwendet, weiß sie nicht, welches Tier sie als Parameter empfängt. Es kann sich um einen Hund, eine Katze, ein Pferd oder später einen Maulwurf, einen Elefanten, einen Mandrill oder eine andere Art von Tier handeln.

Der Schlüssel dieser Eigenschaft besteht darin, dass das Programm Methoden bestimmter Unterklassen verwenden kann, ohne genau zu wissen, um welche Art von Tier es sich handelt, und auf diese Weise einen wichtigen Abstraktionsgrad in Bezug auf die zukünftigen Implementierungen der Animal-Klasse aufrechterhält.

See also  Backbone.js - Erste Schritte

Im nächsten Tutorial werden wir uns eingehender mit dem Thema Polymorphismus befassen. Wir werden sehen, was die Schnittstellen sind und wie man sich auf Schnittstellen konzentriert, um die folgenden Tutorials zu verstehen.

Das Thema ist etwas länger geworden als ich erwartet hatte, aber verzweifle nicht! Es ist wichtig, diese Konzepte richtig zu verstehen, bevor Sie mit der Abhängigkeitsinjektion beginnen, um zu verstehen, wie Spring funktioniert.

Ich hoffe, wir fahren Woche für Woche mit diesen Tutorials fort, vergessen Sie nicht, Ihre Kommentare bis zum nächsten Mal zu hinterlassen!

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *