Sobes.tech
Junior

Чӣ маъно дорад калимаи калидии 'final' дар забони барномасозии Java?

sobes.tech AI

Ҷавоб аз AI

Калидвожа final дар Java истифода мешавад барои нишон додани он, ки тағйирёбанда, усул ё синф наметавонанд тағйир ёбанд.

  1. Таърифи тағйирёбандаи final:

    • Тағирёбандаи, ки ҳамчун final эълон шудааст, метавонад танҳо як маротиба таъин карда шавад. Пас аз таъин, он дигар тағйир дода намешавад.
    • Барои намудҳои додаҳои асосӣ, арзиши тағйирёбандаи final як дона аст.
    • Барои намудҳои додаҳои ишоракунанда, final маънои онро дорад, ки ишора ба объект тағйирнопазир аст, аммо ҳолати объект (майдонҳояш) метавонад тағйир ёбад (агар майдонҳои объект ҳам final набошанд).
    final int MAX_VALUE = 100; // тағйирёбандаи асосӣ `final`
    
    final List<String> names = new ArrayList<>(); // тағйирёбандаи ишоракунанда `final`
    names.add("Alice"); // ОК
    // names = new ArrayList<>(); // Хатои компилятсия - ишора тағйир дода намешавад
    
  2. Усули final:

    • Усули, ки ҳамчун final эълон шудааст, дар синфҳои зернаметавонад навишт нашуда бошад.
    • Ин барои пешгирии тағйироти номуносиб дар рафтор дар зериҳуҷра истифода мешавад.
    class Parent {
        final void display() {
            System.out.println("Ин усули `final` аст.");
        }
    }
    
    class Child extends Parent {
        // @Override void display() { } // Хатои компилятсия - навиштани усули `final` имконнопазир аст
    }
    
  3. Синфи final:

    • Синфе, ки ҳамчун final эълон шудааст, наметавонад синфҳои зернаметавонад дошта бошад (наметавонад мерос гирад).
    • Ин барои таъмини тағйирнопазирии синф ва пешгирии васеъ кардани функсионалӣ истифода мешавад.
    final class ImmutableClass {
        private final int value;
    
        public ImmutableClass(int value) {
            this.value = value;
        }
    
        public int getValue() {
            return value;
        }
    }
    
    // class TryingToExtend extends ImmutableClass { } // Хатои компилятсия - наметавонад аз синфи `final` мерос гирад