Sobes.tech
Junior — Middle

Bir sinfning xususiy metodini uning ta'rifidan tashqarida chaqirish mumkinmi?

sobes.tech AI

AIdan javob

Java'da, bir sinfning xususiy (private) metodini uning ta'rifidan tashqarida to'g'ridan-to'g'ri chaqib bo'lmaydi, chunki private modifikatori faqat sinf ichida kirishni cheklaydi.

Ammo, refleksiya yordamida, bu cheklovlarga qaramay, xususiy metodlarga kirish va chaqirish mumkin. Masalan:

import java.lang.reflect.Method;

class MyClass {
    private void secret() {
        System.out.println("Xususiy metod chaqirildi");
    }
}

public class Test {
    public static void main(String[] args) throws Exception {
        MyClass obj = new MyClass();
        Method method = MyClass.class.getDeclaredMethod("secret");
        method.setAccessible(true); // kirish cheklovini olib tashlash
        method.invoke(obj); // xususiy metodni chaqirish
    }
}

Shu tarzda, odatiy chaqirish mumkin emas, lekin refleksiya bu cheklovni yengib o'tishga imkon beradi.