나는 당신이 여기에 공개, 개인 및 보호 방법에 대해 이야기하고 있다고 가정합니까?
그렇다면 보안을 위해 존재하지 않습니다. 소프트웨어의 모듈화가 더 쉬워 지도록하기 위해 존재합니다. (그들이 성공하든 다른 사람들을 위해 떠날 논쟁이지만, 그들이 무엇을위한 것인지에 대한 비전입니다.)
라이브러리를 제공한다고 가정하면 나중에 다른 버전의 라이브러리를 제공하고 개인으로 표시된 항목을 원하는만큼 변경할 수 있습니다. 대조적으로 내가 그 물건을 비공개로 표시하지 않았다면 누군가 어딘가에 직접 액세스하기 때문에 소프트웨어의 내부를 변경할 수 없습니다. 이론적으로 문서화 된 API를 사용하지 않는 것은 잘못입니다. 그러나 클라이언트는 소프트웨어 업그레이드로 인해 소프트웨어가 고장났다는 것을 내 잘못으로 인식합니다. 그들은 변명을 원하지 않고 고정되기를 원합니다. 그러나 그들이 처음부터 액세스 할 수있게하지 않으면 내 API는 내가 API로 의도 한 공개 메소드이며 문제를 피할 수 있습니다.
두 번째로 가장 가능성이 높은 것은 Java의 보안 모델입니다. 당신이 그것에 대해 이야기하고 있다면, 그것이 존재하는 이유는 Java에 대한 원래의 비전은 신뢰할 수없는 애플릿을 보내는 사람들이 타사 프로그램 (예 : 브라우저) 내에서 대화 형으로 작동하도록하는 것이 었습니다. 따라서 보안 모델은 사용자에게 악의적 인 애플릿에 대한 보호 기능을 제공하기위한 것입니다. 따라서 걱정하고 보호해야하는 보안 위협은로드 될 수있는 다른 소프트웨어와 상호 작용하려는 신뢰할 수없는 애플릿입니다.