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ě
- Typy vnořených tříd
- Rozdíl mezi statickými a nestatickými vnořenými třídami
- Klíčové body k zapamatování
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
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.