Sobes.tech
Junior — Middle

Фарқи байни синфи дохилӣ ва синфи дарунӣ дар барномасозӣ чист?

sobes.tech AI

Ҷавоб аз AI

Дар Java (ва Android) сохташтаи синф ҳар як синфест, ки дар дохили дигар синф эълон шудааст. Сохташтаи синфҳо ба ду навъ тақсим мешаванд:

  1. Сохташтаи синфи статикӣ (static nested class) — бо модификатори static эълон мешавад. Манъ аст, ки мустақиман ба аъзои ғайристатикӣ (нестатикӣ) дар синфи беруна дастрасӣ пайдо кунад.
  2. Синфи дохилӣ (inner class) — синфи дохилӣ бе модификатори static. Бо намунаи синфи беруна пайваст аст ва ба майдонҳо ва методҳои ғайристатикӣ дастрасӣ дорад.

Масалан:

class Outer {
    private int outerField = 10;

    static class StaticNested {
        void print() {
            // Манъ аст, ки мустақиман ба outerField дастрасӣ пайдо кунад
            System.out.println("Синфи дохилӣ статикӣ");
        }
    }

    class Inner {
        void print() {
            // Дастрасӣ мумкин аст
            System.out.println("Синфи дохилӣ, outerField = " + outerField);
        }
    }
}

Яке аз фарқиятҳои асосӣ он аст, ки синфи дохилӣ бо объекте аз синфи беруна пайваст аст ва метавонад ба аъзои ғайристатикӣ дастрасӣ пайдо кунад, дар ҳоле ки синфи дохилӣ статикӣ — наметавонад.