Jak implementovat vnořenou třídu v Javě?



Tento článek o vnořené třídě v Javě vám pomůže pochopit, jak implementovat vnořené třídy pomocí ukázkového programu.

V Javě lze třídu definovat v jiné třídě a tyto třídy se označují jako vnořené třídy. Tyto třídy vám pomohou logicky seskupit třídy, které se používají pouze na jednom místě. To zvyšuje použití zapouzdření a vytváří čitelnější a udržovatelnější kód. Tento blog „Vnořená třída v Javě“ vám poskytne rychlý úvod k vnořeným třídám v . Níže jsou témata zahrnutá v tomto blogu:

Vnořená třída v Javě

The třída zapsaný v rámci třídy se nazývá vnořená třída, zatímco třída, která obsahuje vnitřní třídu, se nazývá vnější třída. Níže je několik bodů, které si musíte pamatovat pro vnořené třídy v Javě -





  • Rozsah vnořené třídy je omezen její uzavírající třídou.
  • Vnořená třída má přístup k členům třídy, ve které je vnořena. Ale uzavírající třída nemůže přistupovat k členům vnořené třídy.
  • Vnořená třída je jejím uzavírajícím členem třídy.
  • Vnořenou třídu lze prohlásit za veřejnou, soukromou, chráněnou nebo soukromou za balíček.

Typy vnořených tříd

Vnitřní / nestatická vnořená třída: V Javě jsou nestatické třídy bezpečnostním mechanismem. Třídu nelze přidružit k přístup k úpravám soukromý, ale pokud máte třídu jako člena jiné třídy, může být nestatická třída nastavena jako soukromá.

Typy vnitřních tříd a minus



  • Vnitřní třída
  • Metoda-lokální vnitřní třída
  • Anonymní vnitřní třída

Vnitřní třída

Chcete-li vytvořit vnitřní třídu, stačí napsat třídu v rámci třídy. Vnitřní třída může být soukromá, ke které nelze získat přístup z objekt mimo třídu. Níže je program pro vytvoření vnitřní třídy. V tomto příkladu je vnitřní třída nastavena jako soukromá a ke třídě se přistupuje prostřednictvím metody.

třída Outer_Test {int num // vnitřní třída soukromá třída Inner_Test {public void print () {System.out.println ('This is an Our internal class')}}} // Přístup k vnitřní třídě z metody void display_Inner () { Inner_Test internal = new Inner_Test () inner.print ()}} veřejná třída My_class {public static void main (String args []) {// Vytvoření instance vnější třídy Outer_Test outer = new Outer_Test () // Přístup k metodě display_Inner () . vnější.display_Inner ()}}

Výstup
Vnořená třída vnitřní - Edureka

Metoda-lokální vnitřní třída

V Javě lze třídu napsat v rámci a je to místní typ. Podobně jako u lokálních proměnných je rozsah vnitřní třídy v rámci metody omezen. Metoda-lokální vnitřní třída je začleněna pouze v rámci metody, kde je definována vnitřní třída. Níže uvedený program ukazuje, jak použít vnitřní třídu místní metody.



public class Outerclass {// metoda instance vnější třídy void my_Method () {int num = 1001 // metoda-místní třída vnitřní třídy StarInner_Test {public void print () {System.out.println ('Toto je vnitřní třída hvězdy' + num)}} // konec vnitřní třídy // Přístup k vnitřní třídě StarInner_Test star = new StarInner_Test () star.print ()} public static void main (String args []) {Outerclass vnější = nová Outerclass () vnější. my_Method ()}}

Výstup

datová věda co to je

Anonymní vnitřní třída

Anonymní vnitřní třída je vnitřní třída deklarovaná bez názvu třídy. V anonymní vnitřní třídě to deklarujeme a instancujeme současně. Obvykle se používají, když potřebujete přepsat metodu třídy nebo rozhraní. Níže uvedený program ukazuje, jak používat anonymní vnitřní třídu -

abstract class AnonymousInnerTest {public abstract void mytest ()} public class Outer_class {public static void main (String args []) {AnonymousInnerTest internal = new AnonymousInnerTest () {public void mytest () {System.out.println ('This is an příklad anonymní třídy vnitřního testu ')}} inner.mytest ()}}

Výstup-

Statická vnořená třída: NA je vnořená třída, která je statickým členem vnější třídy. Na rozdíl od vnitřní třídy nemůže statická vnořená třída přistupovat k proměnným členů vnější třídy, protože statická vnořená třída nevyžaduje instanci vnější třídy. Z tohoto důvodu neexistuje žádný odkaz na vnější třídu s OuterClass.this. Syntaxe statické vnořené třídy je -

třída MyOuter {statická třída Nested_Test {}}

Příklad statické vnořené třídy

public class Outer {static class Nested_Test {public void my_method () {System.out.println ('This is Edureka's nested test class')}} public static void main (String args []) {Outer.Nested_Test nested = new Outer. Nested_Test () nested.my_method ()}}

Výstup

co je indexof v JavaScriptu

Rozdíl mezi statickými a nestatickými vnořenými třídami

Statické vnořené třídy nemají přímo přístup k ostatním členům obklopující třídy. Být statický, musí přistupovat k nestatickým členům své obklopující třídy prostřednictvím objektu, což znamená, že nemůže přímo odkazovat na nestatické členy své obklopující třídy. A kvůli tomuto omezení se statické vnořené třídy používají jen zřídka.

Nestatické vnořené třídy mají přístup ke všem členům své vnější třídy a mohou na ně odkazovat přímo stejným způsobem jako ostatní nestatické členy vnější třídy.

Než se dostaneme na konec tohoto článku, podívejme se na několik klíčových bodů.

Klíčové body k zapamatování

  • S vnitřní třídou se zachází jako s běžným členem třídy.
  • Protože vnitřní třída je členy vnější třídy, můžete na svou vnitřní třídu použít různé modifikátory přístupu, jako je chráněný, soukromý.
  • Vzhledem k tomu, že vnořená třída je členem její obklopující třídy, můžete použít. (tečka) notace pro přístup k vnořené třídě a jejím členům.
  • Pomocí vnořené třídy je váš kód čitelnější a poskytuje lepší zapouzdření .
  • Vnitřní třída má přístup k ostatním členům vnější třídy, i když jsou prohlášeny za soukromé.

S tímto se dostáváme na konec tohoto blogu o vnořených třídách v Javě. Pokud se chcete o Javě dozvědět více, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů rozložených po celém světě. Školicí a certifikační kurz Edureka Java J2EE a SOA je určen pro studenty a profesionály, kteří chtějí být vývojářem Java. Kurz je navržen tak, aby vám poskytl náskok v programování v Javě a naučil vás základní i pokročilé koncepty Javy spolu s různými rámci Java, jako je Hibernate & Spring.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů tohoto blogu „Nested Class in Java“ a my se vám ozveme co nejdříve.