Hoe geneste klasse in Java te implementeren?



Dit artikel over geneste klassen in java zal u helpen begrijpen hoe u geneste klassen kunt implementeren met behulp van een voorbeeldprogramma.

In Java kan een klasse binnen een andere klasse worden gedefinieerd en dergelijke klassen staan ​​bekend als geneste klassen. Deze lessen helpen je om logisch klassen te groeperen die maar op één plek worden gebruikt. Dit verhoogt het gebruik van inkapseling en zorgt voor een beter leesbare en onderhoudbare code. Deze blog over 'Geneste klassen in Java' geeft je een snelle to-the-point inleiding tot geneste klassen in de . Hieronder staan ​​de onderwerpen die in deze blog worden behandeld:

binair zoekalgoritme in java

Geneste klasse in Java

De klasse geschreven binnen een klasse wordt de geneste klasse genoemd, terwijl de klasse die de binnenste klasse bevat, de buitenste klasse wordt genoemd. Hieronder staan ​​enkele punten om te onthouden voor geneste klassen in Java -





  • Het bereik van een geneste klasse wordt begrensd door de omsluitende klasse.
  • Een geneste klasse heeft toegang tot de leden van de klasse waarin deze is genest. Maar de omsluitende klasse heeft geen toegang tot de leden van de geneste klasse.
  • Een geneste klasse is het omsluitende klassenlid.
  • Een geneste klasse kan openbaar, privé, beveiligd of pakket-privé worden verklaard.

Typen geneste klassen

Innerlijke / niet-statische geneste klasse: In Java zijn niet-statische klassen een beveiligingsmechanisme. Een klasse kan niet worden gekoppeld aan de toegang tot bewerken privé, maar als je de klas hebt als lid van een andere klas, dan kan de niet-statische klas privé gemaakt worden.

Soorten innerlijke klassen en minus



  • Innerlijke klasse
  • Method-local Inner Class
  • Anonieme innerlijke klasse

Innerlijke klasse

Om een ​​innerlijke klas te creëren, hoeft u alleen maar een klas binnen een klas te schrijven. Een innerlijke klasse kan privé zijn die niet toegankelijk is vanaf een voorwerp buiten de klas. Hieronder staat een programma om een ​​innerlijke klasse te creëren. In dit voorbeeld wordt de binnenste klasse privé gemaakt en wordt deze via een methode benaderd.

class Outer_Test {int num // inner class private class Inner_Test {public void print () {System.out.println ('This is an Our inner class')}} // Toegang tot de inner class via de methode void display_Inner () { Inner_Test inner = new Inner_Test () inner.print ()}} public class My_class {public static void main (String args []) {// Instantiëren van de buitenste klasse Outer_Test buiten = nieuwe Outer_Test () // Toegang tot de display_Inner () methode . outer.display_Inner ()}}

Uitvoer
Geneste klas binnen- Edureka

Method-local Inner Class

In Java kan een klasse worden geschreven binnen een en het is een lokaal type. Net als bij lokale variabelen is het bereik van een innerlijke klasse binnen de methode beperkt. Een methode-lokale innerlijke klasse wordt alleen opgenomen in de methode waar de innerlijke klasse is gedefinieerd. Het onderstaande programma laat zien hoe je een method-local inner class gebruikt.



public class Outerclass {// instantiemethode van de buitenste klasse void my_Method () {int num = 1001 // method-local inner class class StarInner_Test {public void print () {System.out.println ('This is star inner class' + num)}} // einde van de innerlijke klasse // Toegang tot de innerlijke klasse StarInner_Test star = nieuwe StarInner_Test () star.print ()} public static void main (String args []) {Outerclass outer = nieuwe Outerclass () outer. my_Method ()}}

Uitvoer

Anonieme innerlijke klasse

Anonieme innerlijke klasse is een innerlijke klasse die is gedeclareerd zonder een klassenaam. In een anonieme innerlijke klasse verklaren en instantiëren we het tegelijkertijd. Ze worden over het algemeen gebruikt wanneer u de methode van een klasse of interface moet overschrijven. Het onderstaande programma laat zien hoe u een anonieme innerlijke klasse gebruikt -

abstracte klasse AnonymousInnerTest {public abstract void mytest ()} public class Outer_class {public static void main (String args []) {AnonymousInnerTest inner = new AnonymousInnerTest () {public void mytest () {System.out.println ('Dit is een voorbeeld van anonieme innerlijke testklasse ')}} inner.mytest ()}}

Uitgang

Statische geneste klasse: NAAR is een geneste klasse die een statisch lid is van de buitenste klasse. In tegenstelling tot de innerlijke klasse heeft de statische geneste klasse geen toegang tot lidvariabelen van de buitenste klasse omdat voor de statische geneste klasse geen instantie van de buitenste klasse nodig is. Daarom is er geen verwijzing naar de buitenste klasse met OuterClass.this. De syntaxis van een statische geneste klasse is -

klasse MyOuter {statische klasse Nested_Test {}}

Voorbeeld van een statische geneste klasse

public class Outer {statische klasse Nested_Test {public void my_method () {System.out.println ('Dit is Edureka's geneste testklasse')}} public static void main (String args []) {Outer.Nested_Test genest = nieuwe Outer. Nested_Test () genest.my_method ()}}

Uitvoer

Verschil tussen statische en niet-statische geneste klassen

Statische geneste klassen hebben geen directe toegang tot andere leden van de omsluitende klasse. Omdat het statisch is, moet het toegang krijgen tot de niet-statische leden van zijn omsluitende klasse via een object, wat betekent dat het niet rechtstreeks naar de niet-statische leden van zijn omsluitende klasse kan verwijzen. En vanwege deze beperking worden statisch geneste klassen zelden gebruikt.

Niet-statische geneste klassen hebben toegang tot alle leden van de buitenste klasse en kunnen er rechtstreeks naar verwijzen op dezelfde manier als andere niet-statische leden van de buitenste klasse.

Laten we, voordat we aan het einde van dit artikel komen, enkele belangrijke punten bekijken.

Belangrijke punten om te onthouden

  • De innerlijke klasse wordt behandeld als een gewoon lid van een klas.
  • Omdat de innerlijke klasse leden is van de buitenste klasse, kunt u verschillende toegangsmodificatoren toepassen, zoals beschermd, privé, op uw innerlijke klasse.
  • Omdat de geneste klasse een lid is van de omsluitende klasse, kunt u gebruiken. (punt) notatie om toegang te krijgen tot de geneste klasse en zijn leden.
  • Als u een geneste klasse gebruikt, wordt uw code beter leesbaar en biedt deze beter inkapseling .
  • De binnenste klasse heeft toegang tot andere leden van de buitenste klasse, zelfs als ze privé zijn verklaard.

Hiermee komen we aan het einde van deze blog over geneste klassen in Java. Als je meer wilt weten over Java, bekijk dan het door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. De training- en certificeringcursus Java J2EE en SOA van Edureka is bedoeld voor studenten en professionals die Java-ontwikkelaar willen worden. De cursus is bedoeld om u een voorsprong te geven in het programmeren van Java en u te trainen in zowel de kern als geavanceerde Java-concepten, samen met verschillende Java-frameworks zoals Hibernate & Spring.

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van deze 'Geneste klasse in Java' -blog en we nemen zo snel mogelijk contact met u op.