Java / Spring – Inheritance, Polymorphism und Dependency Injection

Wir werden uns 2 Konzepte der Programmierung in Java ( Erbe und Polymorphismus ) ansehen , um uns darauf vorzubereiten, ein fortgeschritteneres Konzept namens Injection Dependences zu verstehen, das typisch für Frameworks wie Spring und Hibernate ist, von denen wir heute sprechen werden. nächste Tutorials.

Reden wir über Herencia

Nein, es bezieht sich nicht auf die Millionen, die Ihr reicher Onkel hinterlassen hat, als er schließlich starb. Es ist ein typisches Programmierkonzept in Java und besteht darin, Felder und Methoden einer Oberklasse innerhalb einer Unterklasse zu “erben”.

Grundbegriffe der Vererbung:

  • Eine Klasse, die von einer anderen Klasse abgeleitet ist, wird Unterklasse (oder erweiterte Klasse, Tochterklasse oder abgeleitete Klasse ) genannt. Die Klasse, von der die Unterklasse abgeleitet ist, wird auch als Superklasse (auch Basisklasse oder Elternklasse ) bezeichnet. Während dieses Tutorials und der folgenden Tutorials verwende ich die Begriffe Unterklasse und Oberklasse .
  • Mit Ausnahme der Object- Klasse erben ALL-Klassen in Java direkt an eine UNIQUE- Superklasse (einfache Vererbung). Wenn Sie die Superklasse nicht explizit definieren, erbt jede Klasse implizit die Object- Klasse.
  • Eine Klasse kann von einer anderen Klasse erben, die von einer anderen Klasse erbt, die von einer anderen Klasse erbt, bis sie von der Object- Klasse erbt. Es wird dann gesagt, dass diese Klasse von allen Klassen in der Hierarchie zur Object- Klasse “abstammt”.

Versuchen wir dies mit einem Beispiel zu vereinfachen:

Angenommen, das Vererbungspaket enthält die folgenden drei Klassen:

 Paketvererbung; public class Perro { private int Anzahl der Beine; private String colorDePelo; Privates Stringrennen; public int getNumeroDePatas () { Anzahl der Beine zurückgeben; } public void setNumeroDePatas (int numeroDePatas) { this.numeroDePatas = numeroDePatas; } public String getColorDePelo () { return colorDePelo; } public void setColorDePelo (String colorDePelo) { this.colorDePelo = colorDePelo; } public String getRaza () { Rückkehrrennen; } public void setRaza (String race) { this.raza = Rasse; } öffentliche leere Rinde () { System.out.println ("Der Hund macht WOW"); } } 

 Paketvererbung; public class Gato { private int Anzahl der Beine; private String colorDePelo; Privates Stringrennen; public int getNumeroDePatas () { Anzahl der Beine zurückgeben; } public void setNumeroDePatas (int numeroDePatas) { this.numeroDePatas = numeroDePatas; } public String getColorDePelo () { return colorDePelo; } public void setColorDePelo (String colorDePelo) { this.colorDePelo = colorDePelo; } public String getRaza () { Rückkehrrennen; } public void setRaza (String race) { this.raza = Rasse; } public void maullar () { System.out.println ("Die Katze macht MIAU"); } } 

 Paketvererbung; öffentliche Klasse Caballo { private int Anzahl der Beine; private String colorDePelo; Privates Stringrennen; public int getNumeroDePatas () { Anzahl der Beine zurückgeben; } public void setNumeroDePatas (int numeroDePatas) { this.numeroDePatas = numeroDePatas; } public String getColorDePelo () { return colorDePelo; } public void setColorDePelo (String colorDePelo) { this.colorDePelo = colorDePelo; } public String getRaza () { Rückkehrrennen; } public void setRaza (String race) { this.raza = Rasse; } public void relinch () { System.out.println ("Das Pferd macht IIIIGGGHHHH"); } } 

Es kann beobachtet werden, dass die 3 Klassen 3 verschiedene Objekttypen erzeugen, aber mit mehreren ähnlichen Merkmalen, tatsächlich sind sie bis auf die Methoden des Bellens, Miauens und Wieherns genau gleich. Daher wäre es unter Verwendung des Vererbungskonzepts angebracht, die gemeinsamen Merkmale in einer Oberklasse umzuschreiben und jede Unterklasse so zu ändern, dass sie die entsprechende Methode nur folgendermaßen hinzufügt:

See also  Geräte zur Dateneingabe in Windows 8 Tablets

[/color] [color = # a9a9a9] 1 [/ color]
Wir haben die Tier- Superklasse erstellt :

 Paketvererbung; public class Animal { private int Anzahl der Beine; private String colorDePelo; Privates Stringrennen; public int getNumeroDePatas () { Anzahl der Beine zurückgeben; } public void setNumeroDePatas (int numeroDePatas) { this.numeroDePatas = numeroDePatas; } public String getColorDePelo () { return colorDePelo; } public void setColorDePelo (String colorDePelo) { this.colorDePelo = colorDePelo; } public String getRaza () { Rückkehrrennen; } public void setRaza (String race) { this.raza = Rasse; } } 

[/color] [color = # a9a9a9] 2 [/ color]
Wir ändern die 3 vorhandenen Unterklassen so , dass sie von der Animal-Klasse erben (unter Verwendung des Schlüsselworts “extend”) und fügen nur die eindeutige Methode hinzu:

 Paketvererbung; public class Hund verlängert Tier { öffentliche leere Rinde () { System.out.println ("Der Hund macht WOW"); } } 

 Paketvererbung; öffentliche Klasse Katze erweitert Tier { public void maullar () { System.out.println ("Die Katze macht MIAU"); } } 

 Paketvererbung; public class Pferd erweitert Tier { public void relinch () { System.out.println ("Das Pferd macht IIIIGGGHHHH"); } } 

Auf diese Weise beenden wir das Thema “Erbe” in Java, bald werden wir mit dem Konzept “Polymorphismus” fortfahren, das eng mit “Erbe” zusammenhängt, und uns helfen, das Konzept “Injection of Dependencies” zu verstehen, um das zu verstehen Rahmen “Frühling”.

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 *