Sobes.tech
Middle

Кайсы ички класстардын түрлөрү бар?

sobes.tech AI

AIден жооп

Статикалык ички класстар жана ички класстар (статикалык эмес ички класстар).

  • Статикалык ички класстар:

    • static ачкыч сөзү менен жарыяланат.
    • Тек гана тышкы класстын статикалык мүчөлөрүнө ( талаалар жана ыкмалар) кире алат, анын ичинде жеке (private).
    • Түздөн-түз тышкы класстын статикалык эмес мүчөлөрүнө кире албайт.
    • Тышкы класстын экземплярсыз түзүлө алат.
    class Outer {
        private static int staticVar = 10;
        private int instanceVar = 20;
    
        static class StaticNested {
            void display() {
                System.out.println("Статикалык өзгөрүү: " + staticVar);
                // System.out.println("Экземпляр өзгөрүү: " + instanceVar); // Компиляция ката
            }
        }
    }
    
  • Ички класстар (статикалык эмес ички класстар):

    • static ачкыч сөзү жок.
    • Бардык мүчөлөргө (статикалык жана статикалык эмес) толук кире алат, анын ичинде жеке (private).
    • Статикалык мүчөлөрдү ( талаалар жана ыкмалар) камтыша албайт, гана финалдык константтарды камтыйт.
    • Алардын түзүлүшү үчүн тышкы класстын экземпляры керек.
    class Outer {
        private static int staticVar = 10;
        private int instanceVar = 20;
    
        class Inner {
            void display() {
                System.out.println("Статикалык өзгөрүү: " + staticVar);
                System.out.println("Экземпляр өзгөрүү: " + instanceVar);
            }
        }
    }
    
  • Жергиликтүү класстар:

    • Методтордун, конструкторлордун же инциализациялык блоктордун ичинде жарыяланат.
    • Бардык финалдык жана effectively final жергиликтүү өзгөрмөлөргө, ошондой эле алардын аныкталган тышкы класстын мүчөлөрүнө кире алат.
    • Алардын көрүнүү чөйрөсү жарыяланган блок менен чектелет.
    class Outer {
        void myMethod() {
            final int localVar = 5; // Effectively final
    
            class LocalInner {
                void display() {
                    System.out.println("Жергиликтүү өзгөрүү: " + localVar);
                }
            }
    
            LocalInner local = new LocalInner();
            local.display();
        }
    }
    
  • Анонимдүү класстар:

    • Аты жок.
    • Бир эле учурда түзүлүп, инстанцияланат.
    • Интерфейстердин же класстардын кеңейтүүлөрүн түзүү үчүн кеңири колдонулат.
    interface MyInterface {
        void doSomething();
    }
    
    class Outer {
        void myMethod() {
            MyInterface anon = new MyInterface() {
                @Override
                public void doSomething() {
                    System.out.println("Анонимдүү бир нерсе кылуу.");
                }
            };
            anon.doSomething();
        }
    }
    

Статикалык ички класстар менен ички класстардын негизги айырмачылыктары:

Өзгөчөлүк Статикалык ички класс Ички класс
Ключ сөз static Жок
Мүчөлөргө кирүү Тек гана тышкы класстын статикалык мүчөлөрүнө Бардык тышкы класстын мүчөлөрүнө
Экземпляр түзүү Тышкы класстын экземплярсыз түзүлөт Тышкы класстын экземпляры талап кылынат