Co to jest klasa wewnętrzna w Javie?

Opublikowany: 2022-04-29

Koncepcja klasy wewnętrznej w Javie jest podstawą programowania w Javie. W Javie klasa zagnieżdżona i klasa wewnętrzna to dwie bardzo podobne, ale nieco odmienne koncepcje projektowania klas i często idą ze sobą w parze.

Klasa zagnieżdżona jest zdefiniowana w innej klasie i ma dwa typy — statyczną klasę zagnieżdżoną i niestatyczną klasę zagnieżdżoną. Z drugiej strony, klasa wewnętrzna jest typem niestatycznej klasy zagnieżdżonej i jest kolejnym z trzech typów - składową klasy wewnętrznej, anonimowej klasy wewnętrznej i lokalnej klasy wewnętrznej.

Więc co oznaczają te trzy typy klas wewnętrznych i jakie jest ich zastosowanie? Czytaj dalej, aby dowiedzieć się więcej w tym szczegółowym przewodniku po klasie wewnętrznej Java.

Spis treści

Znaczenie klasy wewnętrznej w Javie

Niestatyczna klasa zagnieżdżona lub klasa wewnętrzna jest zdefiniowana w innej klasie i ma dostęp do elementów członkowskich klasy zewnętrznej (klasa obejmująca). Wręcz przeciwnie, statyczna klasa zagnieżdżona jest również klasą zdefiniowaną w innej klasie, ale w przeciwieństwie do niestatycznej klasy zagnieżdżonej, nie może uzyskać dostępu do zmiennych składowych swojej klasy zewnętrznej. W przypadku niestatycznej klasy zagnieżdżonej nie musimy tworzyć instancji klasy zewnętrznej. Ale w przypadku klasy wewnętrznej musimy najpierw utworzyć instancję klasy zewnętrznej, aby móc utworzyć instancję klasy wewnętrznej.

Źródło

Rodzaje klasy wewnętrznej w Javie

W Javie klasy wewnętrzne są trzech następujących typów:

  • Klasa wewnętrzna członka
  • Anonimowa klasa wewnętrzna
  • Lokalna klasa wewnętrzna

Teraz zrozumiemy każdy typ klasy wewnętrznej z przykładami.

1. Wewnętrzna klasa członka

Składowa klasa wewnętrzna w Javie jest niestatyczną klasą zagnieżdżoną utworzoną wewnątrz klasy, ale poza metodą. Nazywana również zwykłą klasą wewnętrzną, składową wewnętrzną klasę można zadeklarować z modyfikatorami dostępu, takimi jak private, public, default i protected.

Składnia klasy wewnętrznej elementu członkowskiego jest następująca:

klasa zewnętrzna{

//kod

klasa wewnętrzna{

//kod

}

}

Składowa klasa wewnętrzna w przykładzie Java:

Poniżej przedstawiono program pokazujący, jak utworzyć klasę wewnętrzną i uzyskać do niej dostęp. Uczynimy klasę wewnętrzną prywatną i użyjemy metody display_Inner(), aby uzyskać dostęp do klasy.

klasa DemoOuter {

liczba wewnętrzna;

// klasa wewnętrzna

klasa prywatna DemoInner {

public void print() {

System.out.println("To jest klasa wewnętrzna");

}

}

// Dostęp do klasy wewnętrznej z metody wewnątrz

void display_Inner() {

DemoInner inner = new DemoInner();

wewn.druk();

}

}

klasa publiczna MojaKlasa {

public static void main(String args[]) {

// Tworzenie instancji klasy zewnętrznej

DemoOuter zewnętrzny = nowy DemoOuter();

// Dostęp do metody display_Inner()

zewnętrzna.display_Inner();

}

}

Wyjście: To jest klasa wewnętrzna

W powyższym przykładzie OuterDemo jest klasą zewnętrzną, InnerDemo jest klasą wewnętrzną, tworzymy instancję klasy wewnętrznej wewnątrz metody display_Inner(), która jest wywoływana z metody głównej.

Poznaj nasze popularne kursy inżynierii oprogramowania

SL. Nie Programy rozwoju oprogramowania
1 Master of Science in Computer Science z LJMU i IIITB Program certyfikacji cyberbezpieczeństwa Caltech CTME
2 Pełny Bootcamp rozwoju stosu Program PG w Blockchain
3 Executive Post Graduate Programme in Software Development - specjalizacja w DevOps Wyświetl wszystkie kursy inżynierii oprogramowania

2. Anonimowa klasa wewnętrzna

Anonimowa klasa wewnętrzna w Javie to klasa wewnętrzna zadeklarowana bez nazwy klasy i dla której tworzony jest tylko jeden obiekt. Anonimowe klasy wewnętrzne w Javie są deklarowane i tworzone w tym samym czasie. Są najbardziej wartościowe, gdy chcemy nadpisać metodę klasy lub interfejsu.

Składnia anonimowej klasy wewnętrznej w Javie jest następująca:

AnonymousInner an_inner = nowy AnonymousInner() {

public void moja_metoda() {

//kod

}

};

Anonimową klasę wewnętrzną w Javie można utworzyć na dwa sposoby:

  1. Korzystanie z klasy
  2. Korzystanie z interfejsu

Anonimowa klasa wewnętrzna w przykładzie Java (przy użyciu klasy):

Klasa abstrakcyjna Posiłek{

abstrakcyjne void jedz();

}

klasa TestAnonimowyWewnętrzny{

public static void main(String args[]){

Posiłek m=nowy Posiłek(){

void eat(){System.out.println("Smacznego!");}

};

mięso();

}

}

Wyjście: Smaczny smakołyk!

Anonimowa klasa wewnętrzna w przykładzie Java (przy użyciu interfejsu):

Gra interfejsowa{

nieważne odtwarzanie();

}

klasa Test AnonimowyWewnętrzny1{

public static void main(String args[]){

Gra g=nowa gra(){

public void play(){System.out.println("Gry na świeżym powietrzu");}

};

g.play();

}

}

Wyjście: Gry na świeżym powietrzu

3. Lokalna klasa wewnętrzna

Lokalna klasa wewnętrzna w Javie to klasa utworzona wewnątrz metody. Podobnie jak w przypadku zmiennych lokalnych, zakres lokalnej klasy wewnętrznej pozostaje ograniczony w ramach metody.

Lokalne klasy wewnętrzne są zdefiniowane wewnątrz bloku: treść metody, klauzula if lub pętla for. Lokalna klasa wewnętrzna nie jest członkiem żadnej otaczającej klasy, ale zamiast tego należy do bloku, w którym jest zdefiniowana. Tak więc, nawet jeśli lokalna klasa wewnętrzna w Javie nie może mieć skojarzonych z nią żadnych modyfikatorów dostępu, możesz oznaczyć ją jako abstrakcyjną lub ostateczną. Jeśli chcemy wywołać metody lokalnej klasy wewnętrznej, musimy utworzyć instancję klasy wewnątrz metody.

Lokalna klasa wewnętrzna w przykładzie Java:

Poniżej znajduje się przykładowy program pokazujący, jak utworzyć instancję obiektu lokalnej klasy wewnętrznej zadeklarowanej wewnątrz metody klasy zewnętrznej.

pakiet innerClass;

klasa publiczna Outer_Class

{

// Metoda instancji klasy Outer_Class.

publiczne wyświetlanie pustych przestrzeni ()

{

// Deklaracja metody lokalnej klasy wewnętrznej.

klasa Wewnętrzna_Klasa

{

public void msg(){

System.out.println("To jest lokalna klasa wewnętrzna!");

}

}

// Utwórz instancję metody lokalnej klasy wewnętrznej i wywołaj metodę msg() przy użyciu zmiennej odwołania do obiektu i.

Inner_Class i = nowa Inner_Class();

i.msg();

}

public static void main(String[] args)

{

// Utwórz obiekt klasy zewnętrznej Outer_Class.

Outer_Class o = nowa Outer_Class();

o.wyświetlacz();

}

}

Wyjście: To jest lokalna klasa wewnętrzna!

Mając na uwadze podstawy klasy wewnętrznej Java, zrozummy, dlaczego w ogóle ich potrzebujemy.

Zalety Java Inner Class

Klasa wewnętrzna w Javie udostępnia trzy ważne narzędzia. Są to:

1. Ponieważ wewnętrzna klasa Javy może uzyskiwać dostęp do składowych danych i metod klasy zewnętrznej/głównej, w tym prywatnej, reprezentuje ona określony typ relacji.

2. Klasa wewnętrzna Java znacznie ogranicza kodowanie, ponieważ wymaga mniej pisania.

3. Klasa wewnętrzna w Javie logicznie grupuje klasy i interfejsy w jednym miejscu, zwiększając w ten sposób czytelność kodu i ułatwiając jego utrzymanie.

Podsumowując

Koncepcja klas zagnieżdżonych upraszcza i zwiększa elastyczność tworzenia klas w dowolnym miejscu w programowaniu Java. W związku z tym niestatyczna klasa zagnieżdżona, znana jako klasa wewnętrzna, jest szczególnie przydatna, jak już widzieliśmy w naszej dotychczasowej dyskusji.

Chcielibyśmy zakończyć, podając dwa przypadki, w których użycie klasy wewnętrznej wydaje się najbardziej odpowiednie. Po pierwsze, klasa wewnętrzna Javy jest idealna, gdy dwie klasy są blisko powiązane i nie są dostępne dla żadnej innej klasy. Po drugie, klasy wewnętrzne są powszechne w obsłudze zdarzeń programowania Java GUI. Dlatego klasy wewnętrzne Javy mogą być bezpiecznie używane tam, gdzie zaangażowane są słuchacze i ich komponenty GUI.

Zastanawiasz się, gdzie nauczyć się Javy?

UpGrad's Job-linked PG Certification w inżynierii oprogramowania jest tym, czego szukasz!

Specjalnie zaprojektowany dla świeżo upieczonych absolwentów i ostatnich lat, certyfikacja PG związana z pracą w inżynierii oprogramowania jest idealna dla tych, którzy chcą nauczyć się programować i zająć stanowiska w zakresie oprogramowania na poziomie podstawowym. Ten 5-miesięczny program online nauczy najlepszych umiejętności związanych z oprogramowaniem, takich jak Java, JavaScript, HTML5, DSA, AWS, MERN i nie tylko!

Najważniejsze punkty programu:

  • Specjalizacja w MERN Stack/Cloud-Native
  • 500+ godzin nauki online
  • 350+ godzin praktycznego szkolenia
  • 50+ sesji na żywo
  • Pięć projektów branżowych
  • Nawiązywanie kontaktów z ekspertami branżowymi
  • Fora pytań i odpowiedzi z rówieśnikami i ekspertami branżowymi
  • Wsparcie edukacyjne od asystentów nauczania i mentorów branżowych

Zarejestruj się już dziś, aby uczyć się od najlepszych w branży!

Jaka jest różnica między klasą wewnętrzną a podklasą?

Klasa wewnętrzna to klasa zagnieżdżona lub zdefiniowana w innej klasie. Z drugiej strony podklasa to klasa, która pochodzi z innej klasy. Co więcej, podczas gdy dostęp do klasy wewnętrznej można uzyskać tylko za pomocą odwołania do klasy zewnętrznej, w której jest zagnieżdżona, dostęp do klasy podrzędnej można uzyskać bezpośrednio, chyba że podklasa odziedziczyła zmienne prywatne.

Czy możemy napisać klasę wewnątrz klasy w Javie?

Tak, możemy zdefiniować klasę w innej klasie w Javie. Taka klasa jest znana jako klasa zagnieżdżona i pozwala nam logicznie organizować klasy w jednym miejscu, tworząc w ten sposób łatwiejszy w utrzymaniu i czytelny kod. W ramach klasy otaczającej klasę zagnieżdżoną można zadeklarować jako publiczną, prywatną, prywatną, pakietową lub chronioną.

Czy klasa wewnętrzna Java może być prywatna?

Tak, klasa wewnętrzna Java może być prywatna. Ale gdy klasa wewnętrzna zostanie zadeklarowana jako prywatna, nie można uzyskać do niej dostępu z obiektu, który znajduje się poza klasą. Klasy wewnętrzne i zewnętrzne mają dostęp do swoich prywatnych zmiennych instancji i prywatnych metod. Dopóki znajdujemy się w klasie zewnętrznej lub wewnętrznej, modyfikatory private i public mają ten sam efekt.