tgoop.com/javapro_ir/4444
Create:
Last Update:
Last Update:
📌 Inner Classes و Anonymous Classes در جاوا
🔹 Inner Class چیست؟
کلاسی است که داخل یک کلاس دیگر تعریف میشود. این نوع کلاسها برای زمانی مفید هستند که منطقشان بهشدت به کلاس بیرونی وابسته است و استفادهی مستقل ندارند.
انواع Inner Class:
1. Member Inner Class →
کلاس بهصورت مستقیم داخل کلاس بیرونی تعریف میشه.
2. Static Nested Class →
مثل Member Inner Class هست ولی با static تعریف میشه و به instance کلاس بیرونی نیاز نداره.
3. Local Inner Class →
کلاسی که داخل یک متد تعریف میشه.
4. Anonymous Inner Class →
کلاسی بدون نام که معمولاً برای پیادهسازی سریع یک اینترفیس یا کلاس انتزاعی استفاده میشه.
📖 مثال ۱: Member Inner Class
class Outer {
private String message = "Hello from Outer!";
class Inner {
void printMessage() {
System.out.println(message); // دسترسی مستقیم به فیلد Outer
}
}
}
public class Main {
public static void main(String[] args) {
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner(); // ساخت inner class
inner.printMessage();
}
}
👉 در این مثال، Inner به متغیرهای کلاس بیرونی (`Outer`) دسترسی مستقیم داره.
📖 مثال ۲: Static Nested Class
class Outer {
static class Nested {
void display() {
System.out.println("Static Nested Class");
}
}
}
public class Main {
public static void main(String[] args) {
Outer.Nested nested = new Outer.Nested(); // بدون نیاز به instance از Outer
nested.display();
}
}
👉 اینجا چون کلاس داخلی static هست، دیگه به نمونهای از Outer نیاز نداره.
📖 مثال ۳: Anonymous Inner Class
interface Greeting {
void sayHello();
}
public class Main {
public static void main(String[] args) {
Greeting g = new Greeting() {
@Override
public void sayHello() {
System.out.println("Hello from Anonymous Inner Class!");
}
};
g.sayHello();
}
}
👉 اینجا بدون ساخت یک کلاس جداگانه برای `Greeting`، همون لحظه یک کلاس بینام ایجاد و استفاده کردیم. این تکنیک قبل از لامبداها Java 8 خیلی پرکاربرد بود.
✅ جمعبندی
* Inner Class
برای کدی که به کلاس بیرونی وابسته است عالیه.
* Static Nested Class
شبیه Inner Class ولی مستقل از نمونه کلاس بیرونی.
* Local Inner Class
برای منطق موقت داخل متدهاست.
* Anonymous Inner Class
برای پیادهسازی سریع اینترفیسها یا کلاسهای انتزاعی به کار میره.
#کاربرـپیشرفته
🆔 @javapro_ir
🆔 @group_javapro
BY برنامه نویسی جاوا | Java
Share with your friend now:
tgoop.com/javapro_ir/4444