Hvordan implementere anonym klasse i Java



Denne bloggen vil gi deg detaljert og omfattende kunnskap om anonym klasse i Java med eksempler og hvordan den skiller seg fra en vanlig klasse.

Anonyme klasser lar deg skrive liten kode og la deg erklære og sette i gang klasse samtidig. Disse klassene har ikke navn, den brukes når du bare vil bruke en klasse. Det er et viktig aspekt av Java-programmering. La oss forstå hva som er Anonym klasse i Java i følgende rekkefølge:

Erklære anonyme klasser





Normalt lager vi en klasse, dvs. vi erklærer klasse, men anonyme klasser er uttrykk som betyr at vi definerer den anonyme klassen i en annen uttrykk . Med enkle ord er den anonyme indre klassen en klasse uten navn, og det opprettes bare ett objekt.

Anonymous-Class-In-Java



kokk vs dukke vs salt

Anonym klasse er nyttig når vi må lage en forekomst av objektet med overbelastningsmetoder for en klasse eller grensesnitt uten å lage en underklasse av klasse.

Anonym kan opprettes på to måter:

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

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



  • Enger
  • Ekstra metoder
  • Instans initialisering
  • Lokale klasser

Syntaks for anonym klasse i Java

Syntaksen til en anonym klasse er akkurat som konstruktør bortsett fra at det er en klassedefinisjon i blokken som vist i utdraget nedenfor:

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

La oss se på følgende eksempel:

Følgende eksempel,HelloAnonymousClass, bruker anonyme klasser i initialiseringsuttalelsene til de lokale variablenehilse på noenmen bruker en lokal klasse for initialisering av variabelenhilsen verden:

public class 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')} offentlig ugyldig sayHelloTo (String noen) {name = someone System.out.println ('Hello' + name)}} HelloWorld greetWorld = new GreetWorld () HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello ( ) {sayHelloTo ('Jon')} offentlig ugyldig sayHelloTo (String noen) {name = someone System.out.println ('hola' + name)}} greetWorld.sayHello () greetSomeone.sayHelloTo ('Doe')} offentlig statisk void main (String ... args) {HelloAnonymousClass myApp = new HelloAnonymousClass () myApp.sayHello ()}}

Som vi har sett at anonym klasse er et uttrykk, er syntaksen akkurat som konstruktør, bortsett fra at det er en klassedefinisjon i blokken. Tenk på instantiering av greetSomeone-objektet:

HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello () {sayHelloTo ('Jon')} public void sayHelloTo (String someone) {name = someone System.out.println ('hola' + name) }}

Den anonyme klassen består av følgende:

  • ny operatør.
  • Det kan implementere et grensesnitt eller utvide en klasse. Som i eksemplet ovenfor implementerer det grensesnittet.
  • Den inneholder parenteser som normale klasser for å overføre argumenter til konstruktøren.
  • Inneholder kropp som inneholder metodedeklarasjoner. Erklæringer er ikke tillatt.

Anonym klasse bør være en del av uttalelser.

I eksemplet ovenfor er det anonyme klasseuttrykket en del av uttalelsen som er initiert avhilse på noen.

Måter å lage anonym klasse på Java

Det er 3 måter å lage Inner Class på Java

  • Ved å utvide klassen

Vi kan opprette en anonym indre klasse ved å utvide andre klasser, antar at vi må lage en tråd ved å bruke trådklasse, vi kan opprette en anonym indre klasse i stedet for å lage en egen klasse.

// Program for å illustrere Anonym indre klasse ved å utvide annen klasseklasse AnonymousThreadClass {public static void main (String [] args) {// Anonym Inner class that extends Thread class Thread t = new Thread () {public void run () {System .out.println ('Child!')}} t.start () System.out.println ('Parent!')}}

Produksjon:

Foreldre!

Barn!

  • Ved å implementere grensesnitt

Vi kan også opprette en anonym indre klasse ved å implementere grensesnittet. Nå som vi opprettet en indre klasse ved å utvide klassen på samme måte, kan vi lage en klasse som implementerer et grensesnitt.

hvordan du setter Java-klassebane
// Program for å illustrere Anonym Inner class ved å implementere grensesnittklasse AnonymousThreadClass {public static void main (String [] args) {// Anonym Inner class som 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 ('Forelder!')}}

Produksjon:

Foreldre!

Barn!

  • Som et argument til en metode / konstruktør

For å forstå syntaksen kan vi se på eksemplet nedenfor:

// Program for å illustrere Anonym indre klasse etter 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!')}}

Produksjon:

Foreldre!

Barn!

Forskjellen mellom vanlig og anonym indre klasse

  • Vi kan implementere flere antall grensesnitt ved å bruke normal klasse, men med en anonym indre klasse kan vi bare implementere ett grensesnitt.

  • Med vanlig klasse kan vi utvide en klasse og også implementere flere grensesnitt, men med en anonym indre klasse kan vi enten utvide en klasse eller implementere et grensesnitt, men ikke begge samtidig.

  • Med anonyme vi kan ikke skrive konstruktør fordi den anonyme indre klassen ikke har navnet og navnet på konstruktøren skal være det samme som klassenavnet.

I denne artikkelen så vi hva som er en anonym indre klasse, og hvordan kan vi lage en. vi gikk gjennom syntaksen til anonym indre klasse og også hvordan vi kan lage en anonym klasse på 3 måter, og med dette kommer vi til slutten på denne anonyme klassen i Java-artikkelen. Sjekk ut av Edureka.

javascript sjekk lengden på matrisen

Har du spørsmål? Nevn det i kommentarseksjonen i denne artikkelen, så kommer vi tilbake til deg så snart som mulig.