Java / Spring - Inheritance, Polymorphism and Dependency Injection - Part 2

Obsah
Toto je druhá část série tutoriálů zaměřených na zopakování základních témat jazyka Java a přípravu čtenáře na používání Spring Framework. První část této série tutoriálů najdete zde. V tomto tutoriálu budeme hovořit o polymorfismu.
Slovo polymorfismus pochází z řeckého „poly“, což znamená mnoho, a „morpho“, což znamená tvar a obecně to, na co se vztahuje, schopnost nabývat více podob. V objektově orientovaném programování mluvíme o proměnných nebo referencích, které mohou mít podobu několika různých objektů.
Nyní, když víte, odkud koncept pochází, zkusme jej spojit s jazykem Java. Jak jsme viděli v předchozím tutoriálu, koncept „dědičnosti“ nám umožňuje navázat vztah rodič-dítě mezi 2 soukromými třídami:
Obrázek odeslán
V tomto případě je dědičný vztah mezi třídou Pes a třídu Zvíře, třída Kočka a třídu Zvíře a třídu Kůň a třídu Zvíře, všimněte si, že mezi Pes, Kočka Y Kůň neexistuje žádný přímý vztah.
Pomocí tohoto diagramu jako základu můžeme říci, že pes je zvíře, kočka je zvíře a kůň je zvíře. Když tak můžete vyjádřit vztah v Javě, můžeme říci, že je to proměnná třídy Zvíře je polymorfní, protože může mít formu a Kůň, z a Kočka nebo a Pes.
V předchozím kurzu jsme také viděli, že VŠECHNY třídy dědí přímo nebo nepřímo ze třídy ObjektV tomto případě je diagram o něco úplnější, pokud jej definujeme takto:
Obrázek odeslán
A toto lze rozšířit o několik úrovní níže (v zásadě bude limit úrovně záviset na vašem JVM, ale obvykle je vyšší než 40) Takže zvíře JE objekt, kočka JE zvíře a kočka (podle přechodnosti) JE objekt.
Java vám pak umožňuje použít odkazy na třídy ve vysokých bodech v této struktuře, aby ukazovaly na objekty pod nimi ve struktuře. Například:
 public static void main (String [] args) {Object o1 = new Object (); Zvíře a1 = nové Zvíře (); Pes p = nový pes (); o1 = a1; o1 = p; a1 = p; Objekt o2 = new Animal (); Objekt o3 = nový pes (); Zvíře a2 = nový pes (); logická hodnota b1 = o1 == o2; logická hodnota b2 = o1 == o3; logická hodnota b3 = o1 == a2; if (b1 || b2 || b3) {DoN’t (); }} 

Jak vidíte, proměnná Object může odkazovat na objekt Animal nebo objekt Dog, stejně jako proměnná Animal může odkazovat na objekt Dog. Z toho odvozená kapacita polymorfismu nás vede k tomu, abychom mohli manipulovat s objektem, aniž bychom museli přesně vědět, jaký objekt JE, podívejme se na následující příkladovou metodu:
public static void doSomething (Animal a) {a.getColorDePelo (); }

Když aplikace používá tuto metodu, neví, které zvíře přijímá podle parametru, může to být pes, může to být kočka, může to být kůň nebo později krtek, slon, mandril nebo jakákoli jiná třída, která je zvířecího typu.
Klíčem k této vlastnosti je, že umožňuje programu používat metody určitých podtříd, aniž by konkrétně věděl, o jaký typ zvířete jde, a tak si zachoval významnou úroveň abstrakce s ohledem na budoucí implementace třídy Zvíře.
V dalším tutoriálu půjdeme hlouběji do tématu polymorfismu, uvidíme, co jsou to rozhraní a jak programovat rozhraní zaměřené na rozhraní, což pomůže porozumět následujícím tutoriálům.
Téma se trochu prodloužilo, než jsem čekal, ale nezoufejte! Je důležité správně porozumět těmto konceptům před spuštěním injekce závislostí, abyste pochopili, jak jaro funguje.
Doufám, že v těchto cvičeních budeme pokračovat týden co týden, 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

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave