비록 11 년 동안 살아있는 동안 자바를 프로 그래도 사용했지만, 나는이 사실을 2 년 전에 발견했을 때 놀라지 않았다. 나는 전에 그것을 읽었 음에 틀림 없다. 그러나 어떻게 든 결코 침몰하지 않았다. 나는 이것이 처음에는 이상하게 보일 것이라고 동의하지만, 조금 더 오래 생각하면 그것은 완벽하게 이해된다.
OO는 무엇에 관한 것입니까? 우려와 정보 숨김에 관해서, 맞습니까? 그래서 당신의 디자인에서 당신은 항상 당신의 관심 밖의 것들에 대해 '알아야'하는 것을 피하려고 노력해야합니다. 디자인 타임에 당신이 알고있는 것들은 나중에 바뀔 수 있고 당신의 클래스가 만들고있는 가정을 무효화 할 수 있습니다.
이 경우 Foo는 다른 Foo의 개인 표시 줄에 액세스 할 수 있습니다.이 Foo의 개인 표시 줄은 처음에는 Foo의 우려 사항 이외의 항목에 대해 '아는'것으로 느낍니다. 그러나 우리가 똑같은 클래스 (Foo)의 두 인스턴스에 대해서 이야기하고 있기 때문에 실제로 이것은 우리의 관심 밖이 아닙니다! 예를 들어 bar를 int에서 double로 바꾼다면 동일한 클래스 내에서 bar를 수행하면 모든 컴파일 오류가 즉시 표시됩니다.
또한 이러한 유형의 액세스가 금지되었다고 가정 해보십시오. 그렇다면 Foo가 compareTo를 호출하여 'this'를 인수로 전달하면 어떨까요? 그런 다음 Foo가 자체 전용 막대에 액세스하는 것을 금지해야합니다. 그리고 개인 정적 필드는 어떻습니까? 그건 아주 혼란 스러울거야, 그렇지 않니?
어쩌면 조금 길어질 지 모르겠지만, 첫 번째 쇼크가 끝난 후이 사실을 이해할 수 있기를 바랍니다. (- :..
Smalltalk에서 private의 경계는 클래스가 아니라 객체입니다 (예상대로). – scravy