Sådan implementeres anonym klasse i Java



Denne blog giver dig en detaljeret og omfattende viden om anonym klasse i Java med eksempler og hvordan det adskiller sig fra en almindelig klasse.

Anonyme klasser giver dig mulighed for at skrive lille kode og lade dig erklære og instantiere klasse på samme tid. Disse klasser har ikke navne, det bruges, når du kun vil bruge en klasse en gang. Det er et vigtigt aspekt af Java-programmering. Lad os forstå, hvad der er Anonym klasse i Java i følgende rækkefølge:

Erklæring om anonyme klasser





Normalt opretter vi en klasse, dvs. vi erklærer klasse, men anonyme klasser er udtryk, hvilket betyder, at vi definerer den anonyme klasse i en anden udtryk . Med enkle ord er den anonyme indre klasse en klasse uden navne, og der oprettes kun et objekt.

Anonymous-Class-In-Java



Anonym klasse er nyttig, når vi skal oprette en forekomst af objektet med overbelastningsmetoder i en klasse eller grænseflade uden at skabe en underklasse af klassen.

Anonym kan oprettes på to måder:

  • Klasse (kan også være abstrakt)
  • Interface

I den anonyme klasse kan vi erklære følgende:



  • Felter
  • Ekstra metoder
  • Instans initialisering
  • Lokale klasser

Syntaks for anonym klasse i Java

Syntaksen for en anonym klasse er ligesom konstruktør bortset fra at der er en klassedefinition i blokken som vist i uddraget nedenfor:

// AnonymousClass = interface, abstrakt / konkret klasse. AnonymousClass t = ny AnonymousClass () {// metoder og felter offentlig ugyldig someMethod () {// kode går her}}

Lad os se på følgende eksempel:

Følgende eksempelHej Anonym Klasse, bruger anonyme klasser i initialiseringserklæringerne for de lokale variablerhilse på nogenmen bruger en lokal klasse til initialisering af variablenhilsen verden:

offentlig klasse HelloAnonymousClass {interface HelloWorld {public void sayHello () public void sayHelloTo (String someone)} public void sayHello () {class GreetWorld implementerer HelloWorld {String name = 'world' public void sayHello () {sayHelloTo ('world')} offentligt tomrum sayHelloTo (String nogen) {name = someone System.out.println ('Hello' + name)}} HelloWorld greetWorld = new GreetWorld () HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello ( ) {sayHelloTo ('Jon')} offentlig ugyldighed sayHelloTo (String someone) {name = someone System.out.println ('hola' + name)}} greetWorld.sayHello () greetSomeone.sayHelloTo ('Doe')} offentlig statisk ugyldig hoved (String ... args) {HelloAnonymousClass myApp = ny HelloAnonymousClass () myApp.sayHello ()}}

Som vi har set, at anonym klasse er et udtryk, er syntaksen ligesom konstruktør, medmindre der er en klassedefinition i blokken. Overvej instantiering af greetSomeone-objektet:

passere værdi og passere reference i java
HelloWorld greetSomeone = ny HelloWorld () {String name = 'jon' public void sayHello () {sayHelloTo ('Jon')} public void sayHelloTo (String someone) {name = someone System.out.println ('hola' + navn) }}

Den anonyme klasse består af følgende:

  • ny operatør.
  • Det kan implementere en grænseflade eller udvide en klasse. Som i eksemplet ovenfor implementerer det grænsefladen.
  • Den indeholder parenteser ligesom normale klasser for at overføre argumenter til konstruktøren.
  • Indeholder krop, der indeholder metodedeklarationer. Erklæringer er ikke tilladt.

Anonym klasse skal være en del af udsagn.

I ovenstående eksempel er det anonyme klasseudtryk en del af udsagnet, der er indledt afhilse på nogen.

Måder at oprette anonym klasse på Java

Der er 3 måder at oprette indre klasse på Java

  • Ved at udvide klassen

Vi kan oprette en anonym indre klasse ved at udvide anden klasse, antag at vi er nødt til at oprette en tråd ved hjælp af trådklassen, vi kan oprette en anonym indre klasse i stedet for at oprette en separat klasse.

// Program til at illustrere Anonym indre klasse ved at udvide anden klasseklasse AnonymousThreadClass {public static void main (String [] args) {// Anonym Inner class, der udvider Thread class Thread t = new Thread () {public void run () {System .out.println ('Child!')}} t.start () System.out.println ('Parent!')}}

Produktion:

Forælder!

hvad er et navneområde i c ++

Barn!

  • Ved at implementere interface

Vi kan også oprette en anonym indre klasse ved at implementere grænsefladen. Nu, da vi oprettede en indre klasse ved at udvide klassen på samme måde, kan vi oprette en klasse, der implementerer en grænseflade.

// Program til at illustrere Anonym Inner klasse ved at implementere interface klasse AnonymousThreadClass {public static void main (String [] args) {// Anonym Inner class, der implementerer interface Runnable r = new Runnable () {public void run () {System.out .println ('Child!')}} Tråd t = ny tråd (r) t.start () System.out.println ('Forælder!')}}

Produktion:

Forælder!

Barn!

  • Som et argument til en metode / konstruktør

For at forstå syntaksen kan vi se på nedenstående eksempel:

// Program til at illustrere Anonym indre klasse efter argumentklasse AnonymousThreadClass {public static void main (String [] args) {// Anonym class with constructor argument Thread t = new Thread (new Runnable () {public void run () {System) out.println ('Child!')}} t.start () System.out.println ('Parent!')}}

Produktion:

Forælder!

Barn!

Forskellen mellem almindelig og anonym indre klasse

  • Vi kan implementere flere antal grænseflader ved at bruge normal klasse, men med en anonym indre klasse kan vi kun implementere en grænseflade.

  • Med almindelig klasse kan vi udvide en klasse og også implementere flere grænseflader, men med en anonym indre klasse kan vi enten udvide en klasse eller implementere en grænseflade, men ikke begge på samme tid.

  • Med anonyme vi kan ikke skrive konstruktør fordi den anonyme indre klasse ikke har navnet og konstruktørens navn skal være det samme som klassens navn.

I denne artikel så vi, hvad der er en anonym indre klasse, og hvordan kan vi oprette en. Vi gennemgik syntaksen for anonym indre klasse og også hvordan vi kan oprette en anonym klasse på 3 måder, og med dette kommer vi til slutningen af ​​denne anonyme klasse i Java-artikel. Tjek af Edureka.

Har du et spørgsmål? Nævn det i kommentarsektionen i denne artikel, og vi vender tilbage til dig hurtigst muligt.