Hur man implementerar anonym klass i Java



Den här bloggen ger dig en detaljerad och omfattande kunskap om anonym klass i Java med exempel och hur det skiljer sig från en vanlig klass.

Anonyma klasser låter dig skriva liten kod och låta dig deklarera och starta klassen samtidigt. Dessa klasser har inga namn, det används när du bara vill använda någon klass en gång. Det är en viktig aspekt av Java-programmering. Låt oss förstå vad som är anonym klass i Java i följande ordning:

Förklara anonyma klasser





Normalt skapar vi en klass dvs vi deklarerar klass men anonyma klasser är uttryck vilket innebär att vi definierar den anonyma klassen i en annan uttryck . Med enkla ord är den anonyma inre klassen en klass utan namn och bara ett objekt skapas.

Anonymous-Class-In-Java



Anonym klass är användbar när vi måste skapa en instans av objektet med överbelastningsmetoder för en klass eller ett gränssnitt utan att skapa en underklass av klass.

Anonym kan skapas på två sätt:

  • Klass (kan också vara abstrakt)
  • Gränssnitt

I den anonyma klassen kan vi förklara följande:



  • Fält
  • Extra metoder
  • Instansinitialiserare
  • Lokala klasser

Syntax för anonym klass i Java

Syntaxen för en anonym klass är precis som konstruktören förutom att det finns en klassdefinition i blocket som visas i utdraget nedan:

// AnonymousClass = gränssnitt, abstrakt / konkret klass. AnonymousClass t = ny AnonymousClass () {// metoder och fält offentliga ogiltiga someMethod () {// kod går här}}

Låt oss ta en titt på följande exempel:

Följande exempel,Hej Anonym Klass, använder anonyma klasser i initialiseringsuttalanden för de lokala variablernavälkomna någonmen använder en lokal klass för initialisering av variabelnhälsningsvärld:

public class HelloAnonymousClass {interface HelloWorld {public void sayHello () public void sayHelloTo (String someone)} public void sayHello () {class GreetWorld implementerar HelloWorld {String name = 'world' public void sayHello () {sayHelloTo ('world')} offentligt tomrum sayHelloTo (String någon) {name = someone System.out.println ('Hello' + name)}} HelloWorld greetWorld = new GreetWorld () HelloWorld greetSomeone = new HelloWorld () {String name = 'jon' public void sayHello ( ) {sayHelloTo ('Jon')} public void sayHelloTo (String someone) {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 att anonym klass är ett uttryck är syntaxen precis som konstruktör förutom att det finns en klassdefinition i blocket. Tänk på instantiering av greetSomeone-objektet:

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

Den anonyma klassen består av följande:

  • ny operatör.
  • Det kan implementera ett gränssnitt eller utöka en klass. Som i exemplet ovan implementerar det gränssnittet.
  • Den innehåller parenteser precis som normala klasser för att skicka argument till konstruktören.
  • Innehåller kropp som innehåller metoddeklarationer. Deklarationer är inte tillåtna.

Anonym klass bör ingå i uttalanden.

I exemplet ovan är det anonyma klassuttrycket en del av uttalandet som initieras avvälkomna någon.

Sätt att skapa anonym klass i Java

Det finns 3 sätt att skapa Inner Class i Java

  • Genom att utöka klass

Vi kan skapa en anonym inre klass genom att utöka andra klasser, antar att vi måste skapa en tråd genom att använda trådklassen, vi kan skapa en anonym inre klass istället för att skapa en separat klass.

// Program för att illustrera Anonym inre klass genom att utöka andra klassklasser AnonymousThreadClass {public static void main (String [] args) {// Anonym Inner class som utökar Thread class Thread t = new Thread () {public void run () {System .out.println ('Child!')}} t.start () System.out.println ('Parent!')}}

Produktion:

Förälder!

Barn!

  • Genom att implementera gränssnitt

Vi kan också skapa en anonym inre klass genom att implementera gränssnittet. Nu när vi skapade en inre klass genom att utöka klassen på samma sätt kan vi skapa en klass som implementerar ett gränssnitt.

// Program för att illustrera Anonym Inner class genom att implementera gränssnittsklass AnonymousThreadClass {public static void main (String [] args) {// Anonym Inner class som implementerar gränssnitt Runnable r = new Runnable () {public void run () {System.out .println ('Child!')}} Tråd t = ny tråd (r) t.start () System.out.println ('Förälder!')}}

Produktion:

Förälder!

Barn!

  • Som ett argument till en metod / konstruktör

För att förstå syntax kan vi titta på exemplet nedan:

// Program för att illustrera Anonym inre klass efter argumentklass 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:

vad är begränsningar i sql

Förälder!

Barn!

Skillnaden mellan vanlig och anonym inre klass

  • Vi kan genomföra flera gränssnitt genom att använda normal klass men med en anonym inre klass kan vi bara implementera ett gränssnitt.

  • Med vanlig klass kan vi utöka en klass och implementerar också flera gränssnitt men med en anonym inre klass kan vi antingen utöka en klass eller implementera ett gränssnitt men inte båda samtidigt.

  • Med anonym vi kan inte skriva konstruktör eftersom den anonyma inre klassen inte har namn och konstruktörens namn ska vara samma som klassnamnet.

I den här artikeln såg vi vad som är en anonym inre klass och hur kan vi skapa en. vi gick igenom syntaxen för anonym inre klass och också hur vi kan skapa en anonym klass på 3 sätt och med detta kommer vi till slutet av denna anonyma klass i Java-artikel. Kolla in av Edureka.

Har du en fråga? Nämn det i kommentarsektionen i den här artikeln så återkommer vi till dig så snart som möjligt.