Java / Spring - Inheritance, Polymorphism and Dependency Injection

Obsah
Podíváme se na 2 koncepty programování v Javě (Dědictví Y Polymorfismus), aby nás připravil na pochopení pokročilejšího konceptu zvaného Injekce závislosti což je typické pro rámce jako Spring a Hibernate, které se dnes běžně používají a o kterých si budeme povídat v budoucích tutoriálech.
Ne, nevztahuje se na ty miliony, které vám zanechal váš bohatý strýc, když konečně zemřel, je to typický koncept programování v Javě a spočívá v „dědění“ polí a metod patřících nadtřída v rámci a podtřída.
Základy dědičnosti:
  • Volá se třída, která je odvozena z jiné třídy podtřída (nebo rozšířená třída, dcera třída nebo odvozená třída). Také třída, jejíž podtřída se nazývá nadtřída (také základní třída nebo rodičovská třída). V průběhu tohoto tutoriálu a následujících tutoriálů budu používat podmínky podtřída Y nadtřída.
  • Konkrétně v Javě, kromě třídy Objekt, VŠECHNY třídy dědí přímo na SINGLE nadtřída (jednoduchá dědičnost). V případě, že nadtřída není explicitně definována, každá třída dědí implicitně ze třídy Objekt.
  • Třída může dědit z jiné třídy, která dědí z jiné třídy, která dědí z jiné třídy, dokud nedědí ze třídy Objekt, pak se říká, že zmíněná třída „sestupuje“ ze všech tříd v hierarchii do třídy Objekt.
Zkusme to zjednodušit na příkladu:
Předpokládejme, že v balíčku dědičnosti máme následující 3 třídy:
 dědičnost balíku; veřejná třída Pes {private int numberOfLegs; privátní String haircolor; závod soukromých strun; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {return race; } public void setRace (String race) {this.race = race; } public void bark () {System.out.println ("Pes jde WOW"); }} 

 dědičnost balíku; public class Cat {private int numberOfLegs; privátní String barva vlasů; závod soukromých strun; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {return race; } public void setRace (String race) {this.race = race; } public void meow () {System.out.println ("Kočka MEOW"); }} 

 dědičnost balíku; veřejná třída Kůň {private int numberOfLegs; privátní String haircolor; závod soukromých strun; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {return race; } public void setRace (String race) {this.race = race; } public void neigh () {System.out.println ("Kůň dělá IIIIGGGHHHH"); }} 

Je vidět, že tyto 3 třídy generují 3 různé typy objektů, ale s více podobnými vlastnostmi, ve skutečnosti jsou úplně stejné, kromě kůry, mňoukání a sousedských metod. Proto by pomocí konceptu dědičnosti bylo vhodné přepsat společné charakteristiky v a nadtřída a každou upravit podtřída takže přidají pouze odpovídající metodu následujícím způsobem:
[color = # a9a9a9]1[/Barva]
Vytváříme nadtřída Zvíře:
 dědičnost balíku; veřejná třída Zvíře {private int numberOfLegs; privátní String haircolor; závod soukromých strun; public int getNumberOfLegs () {return numberOfLegs; } public void setNumberOfLegs (int numberOfLegs) {this.numberOfLegs = numberOfLegs; } public String getHairColor () {return hairColor; } public void setHairColor (StringHairColor) {this.HairColor = hairColor; } public String getRace () {return race; } public void setRace (String race) {this.race = race; }} 

[color = # a9a9a9]2 [/Barva]
Upravujeme 3 podtřídy ty stávající, které zdědí ze třídy Animal (pomocí klíčového slova „extends“) a stačí přidat jedinou metodu:
 dědičnost balíku; veřejná třída Pes rozšiřuje Animal {public void bark () {System.out.println ("Dog goes WOW"); }} 

 dědičnost balíku; public class Cat rozšiřuje Animal {public void meow () {System.out.println ("The Cat does MEOW"); }} 

 dědičnost balíku; public class Horse extend Animal {public void neigh () {System.out.println ("Horse does IIIIGGGHHHH"); }} 

Tímto způsobem jsme vyvrcholili tématem „dědičnosti“ v Javě, brzy budeme pokračovat v konceptu „polymorfismu“, který úzce souvisí s „dědičností“ a pomůže nám porozumět konceptu „závislé injekce“, abychom mohli začít rozumět Rámec "jaro".
Nezapomeňte zanechat své komentáře, až příště!Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave