مطالبی در مورد جاوا

مطالبی در مورد جاوا
بسم الله الرحمن الرحیم

nested class - (inner / static)

پنجشنبه, ۳ شهریور ۱۴۰۱، ۰۶:۵۱ ق.ظ

nested class به کلاسی می گویند که داخل کلاسی دیگر تعریف شده است.

اگر استاتیک باشد به آن Static Nested Class می گویند. و اگر نان استاتیک باشد به آن اینر کلاس (inner class) می گویند.

 

class OuterClass { 

   ...

   static class StaticNestedClass {
      ...
   }

   class InnerClass {
      ...
   }

}
OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
OuterClass outerObject = new OuterClass();
OuterClass.InnerClass innerObject = outerObject.new InnerClass();

 

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

 


 

مثال به کار گیری کلاس های نستد:

public class OuterClass {

    String outerField = "Outer field";
    static String staticOuterField = "Static outer field";

    class InnerClass {
        void accessMembers() {
            System.out.println(outerField);
            System.out.println(staticOuterField);
        }
    }

    static class StaticNestedClass {
        void accessMembers(OuterClass outer) {
            // System.out.println(outerField);            // Compiler error: Cannot make a static reference to the non-static     field outerField
            System.out.println(outer.outerField);
            System.out.println(staticOuterField);
        }
    }

    public static void main(String[] args) {
        System.out.println("Inner class:");
        System.out.println("------------");
        OuterClass outerObject = new OuterClass();
        OuterClass.InnerClass innerObject = outerObject.new InnerClass();
        innerObject.accessMembers();

        System.out.println("\nStatic nested class:");
        System.out.println("--------------------");
        StaticNestedClass staticNestedObject = new StaticNestedClass();        
        staticNestedObject.accessMembers(outerObject);
        
        System.out.println("\nTop-level class:");
        System.out.println("--------------------");
        TopLevelClass topLevelObject = new TopLevelClass();        
        topLevelObject.accessMembers(outerObject);                
    }
}

public class TopLevelClass {
    void accessMembers(OuterClass outer) {     
        // System.out.println(OuterClass.outerField);        // Compiler error: Cannot make a static reference to the non-static field OuterClass.outerField
        System.out.println(outer.outerField);
        System.out.println(OuterClass.staticOuterField);
    }  
}

 

 

موافقین ۰ مخالفین ۰ ۰۱/۰۶/۰۳

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی