एक एनोनिमस इनर क्लास एक इनर क्लास है जिसे बिना किसी क्लास नाम के घोषित किया जाता है। दूसरे शब्दों में, एक नामहीन इनर क्लास को एनोनिमस इनर क्लास कहा जाता है। चूंकि इसका कोई नाम नहीं होता, इसलिए इसका कंस्ट्रक्टर नहीं हो सकता क्योंकि हम जानते हैं कि कंस्ट्रक्टर का नाम क्लास के नाम के समान होता है।
हम एक एनोनिमस इनर क्लास को परिभाषित कर सकते हैं और new ऑपरेटर का उपयोग करके एक ही चरण में इसका ऑब्जेक्ट बना सकते हैं।
सिंटैक्स
new(argument-list){
// Anonymous class body
}
Java में एनोनिमस इनर क्लास के प्रकार
- क्लास को एक्सटेंड करने वाली एनोनिमस इनर क्लास
- इंटरफेस को इम्प्लीमेंट करने वाली एनोनिमस इनर क्लास
- आर्गुमेंट के रूप में एनोनिमस इनर क्लास
क्लास को एक्सटेंड करने वाली एनोनिमस इनर क्लास
यहां new कीवर्ड का उपयोग एनोनिमस इनर क्लास का ऑब्जेक्ट बनाने के लिए किया जाता है जिसका पैरेंट क्लास टाइप का रेफरेंस होता है।
उदाहरण
class Car {
public void engineType() {
System.out.println("Turbo Engine");
}
}
public class AnonymousClassDemo {
public static void main(String args[]) {
Car c1 = new Car();
c1.engineType();
Car c2 = new Car() {
@Override
public void engineType() {
System.out.println("V2 Engine");
}
};
c2.engineType();
}
}
आउटपुट
Turbo Engine V2 Engine
इंटरफेस को इम्प्लीमेंट करने वाली एनोनिमस इनर क्लास
यहां new कीवर्ड का उपयोग एनोनिमस इनर क्लास का ऑब्जेक्ट बनाने के लिए किया जाता है जिसका इंटरफेस टाइप का रेफरेंस होता है।
उदाहरण
interface Software {
public void develop();
}
public class AnonymousClassDemo1 {
public static void main(String args[]) {
Software s = new Software() {
@Override
public void develop() {
System.out.println("Software Developed in Java");
}
};
s.develop();
System.out.println(s.getClass().getName());
}
}
आउटपुट
Software Developed in Java AnonymousClassDemo1$1
आर्गुमेंट के रूप में एनोनिमस इनर क्लास
हम एनोनिमस इनर क्लास को आर्गुमेंट के रूप में उपयोग कर सकते हैं ताकि इसे मेथड्स या कंस्ट्रक्टर्स को पास किया जा सके।
उदाहरण
abstract class Engine {
public abstract void engineType();
}
class Vehicle {
public void transport(Engine e) {
e.engineType();
}
}
public class AnonymousInnerClassDemo2 {
public static void main(String args[]) {
Vehicle v = new Vehicle();
v.transport(new Engine() {
@Override
public void engineType() {
System.out.println("Turbo Engine");
}
});
}
}
आउटपुट
Turbo Engine