جاوا و تکنولوژی های آن

java programming language

در این وبلاگ به بررسی نکات موجود در جاوا و تکنولوژی های آن می پردازیم

طبقه بندی موضوعی

۱ مطلب با کلمه‌ی کلیدی «class» ثبت شده است

در جاوا میتوانیم در داخل کلاس یک کلاس دیگر تعریف کنیم که به آن inner class میگویند 

کلاس های داخلی میتوانند فیلد ها و متد های کلاس خارجی را ببینند

برای استفاده از کلاس داخلی در کلاس دیگر باید از کلاس خارجی حتما یک instance بسازیم


کلاس داخلی خود میتواند ارث بری هم داشته باشد 

اگر کلاس داخلی private باشد دیگر نمیتوان از آن Object جدیدی ساخت

کلاس های داخلی نمیتوانند عناصر static داشته باشند


کلاس های inner که بصورت static تعریف شود را nested class میگوییم


کلاس هایی بدون Reference و instance هستند و بیشتر در داخل متد استفاده میشوند 

anonymous class ها constractor ندارند 


local class به کلاس هایی گفته میشود که در داخل متد ایجاد شوند 

کاربرد این کلاس موقعی است که از یک کلاس یا اینترفیس دیگر ارث بری کرده باشد و و تنها کاربردش محدود به عملیاتی در درون متد باشد چون قابل ارجاع نیست 

خیلی به ندرت کاربرد دارد 




public class OuterClass {


    protected static class InnerClass{


        public void method1() {

            System.out.println("method 1 called from inner class");

        }

    }


    public void method1() {

    

        System.out.println("method 1 called from outer class");

        

        class LocalClass extends InnerClass{


            @Override

            public void method1() {

                System.out.println("method 1 called from local class");

            }

        }


        LocalClass lc = new LocalClass();

        lc.method1();


        LocalClass lc2 = new LocalClass() {


            @Override

            public void method1() {

                System.out.println("method 1 called from local class with @Override");

            }

        };

        

        lc2.method1();


    }

    


    public InnerClass method2(){

        

        class LocalClass2 extends InnerClass{


            @Override

            public void method1() {

                System.out.println("method 2 called from local class 2");

            }

        }

        

        LocalClass2 lc2 = new LocalClass2();

        return lc2;

    }


    public static void main(String[] args) {

        

        //anonymous class        

        new OuterClass().method1();


        //anonymous class        

        new OuterClass() {

            @Override

            public void method1() {

                System.out.println("method 1 called from outer class with @Override");

            }

        }.method1();

         

        OuterClass.InnerClass out = new InnerClass();

        out.method1();

    }

    

}