Zakładam, że mówisz tutaj o metodach publicznych, prywatnych i chronionych?
Jeśli tak, to nie istnieją dla celów bezpieczeństwa. Istnieją one w celu ułatwienia zagwarantowania, że oprogramowanie jest odpowiednio zmodularyzowane. (To, czy im się uda, to debata, którą zostawię innym. Taka jest jednak wizja tego, po co są.)
Załóżmy, że dostarczam bibliotekę, a następnie mogę swobodnie dostarczyć inną wersję biblioteki i zmieniać rzeczy oznaczone jako prywatne tak bardzo, jak chcę. Natomiast gdybym nie oznaczył tych rzeczy jako prywatnych, nie byłbym w stanie zmienić żadnych wewnętrznych elementów mojego oprogramowania, ponieważ ktoś gdzieś prawdopodobnie ma do niego bezpośredni dostęp. Oczywiście, teoretycznie jest to ich wina, że nie używają udokumentowanego API. Ale klient postrzega to jako moją winę, że moja aktualizacja oprogramowania spowodowała uszkodzenie oprogramowania. Nie chcą wymówek, chcą to naprawić. Ale jeśli nie pozwolę im mieć dostępu od samego początku, to mój interfejs API jest dokładnie publicznymi metodami, które zamierzałem być moim interfejsem API i problem zostanie uniknięty.
Drugą najbardziej prawdopodobną rzeczą, o której możesz mówić, jest model bezpieczeństwa Java. Jeśli mówisz o tym, przyczyną jest to, że pierwotna wizja Javy dotyczyła osób wysyłających potencjalnie niezaufane aplety do interaktywnej pracy w programach innych firm (np. Przeglądarkach). Dlatego model bezpieczeństwa miał zapewnić użytkownikom pewną ochronę przed złośliwymi apletami. Dlatego zagrożeniem bezpieczeństwa, przed którym należy się martwić i chronić przed nim, są niezaufane aplety próbujące wchodzić w interakcje z innym oprogramowaniem, które może zostać załadowane.