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
- Syntax för anonym klass i Java
- Sätt att skapa anonym klass i Java
- Skillnad mellan vanlig klass och anonym klass
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.
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ågon
men 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.