Suppongo che tu stia parlando di metodi pubblici, privati e protetti qui?
Se è così, allora non esistono allo scopo di sicurezza. Esistono allo scopo di semplificare o garantire una corretta modularizzazione del software. (Sia che ci riescano, è un dibattito che lascerò agli altri, ma è la visione di quello che sono.)
Supponiamo che io fornisca una libreria, quindi sono libero di consegnare in seguito una versione diversa della libreria e di cambiare le cose contrassegnate come private quanto voglio. Al contrario, se non avessi contrassegnato quella roba privata, non sarei in grado di modificare alcun interno del mio software perché qualcuno, da qualche parte, probabilmente lo sta accedendo direttamente. Certo, in teoria è colpa loro se non si utilizza l'API documentata. Ma il cliente percepirà come colpa mia se il mio aggiornamento software ha rotto il loro software. Non vogliono scuse, lo vogliono sistemare. Ma se non permetto loro di avere accesso all'inizio, allora la mia API è esattamente i metodi pubblici che intendevo essere la mia API e il problema è stato evitato.
La seconda cosa più probabile di cui si potrebbe parlare è il modello di sicurezza di Java. Se stai parlando di questo, la ragione per cui esiste è che la visione originale di Java ha coinvolto persone che inviavano eventualmente applet non affidabili a lavorare in modo interattivo all'interno di programmi di terze parti (ad esempio i browser). Pertanto, il modello di sicurezza aveva lo scopo di offrire agli utenti una certa protezione contro le applet dannose. Pertanto, la minaccia alla sicurezza di cui preoccuparsi e proteggerli è rappresentata da applet non affidabili che tentano di interagire con altri software che potrebbero essere caricati.