public와 private

송은석·2021년 2월 10일
0

문제 제기

흔히 클래스의 멤버를 은닉시키기 위하여 private 접근제한자를 쓴다는 말이 있다. 그러나 실제로 사용해보면 getter나 setter를 통해 얼마든지 접근하고 수정할 수 있으며, 그러므로 은닉이라는 말이 맞는지에 대한 의문이 생기기도 한다.

오늘 수업 때 들은 내용은 은닉성은 곧 클래스에 포함되어 있는 것 자체를 말하는 것이며, private 접근제한자를 사용해서가 아니다 라는 것이었다. 해당 멤버 자체를 클래스의 이름을 통해서 접근할 수밖에 없기 때문에 은닉성이라는 것이다.

이에 서치를 해보다가, https://kldp.org/node/61904 의 토론을 보면서 이해되는 몇 가지를 추려보았다.


public과 private에 대한 의견들

먼저 코드의 의미적인 표현을 나타내기 위해서 private를 썼다는 내용이 있었다. public과 다를 것 없지만, 해당 클래스의 코드를 재사용하게 되었을 때, 또한 다른 사람이 그 코드를 사용하게 되었을 때 해당 클래스의 내용을 보다 의미있고 명확하게 전달하도록 하기 위해 private 접근 제한자를 사용하게 되었다는 것이다.

두번째로, private은 객체지향성 개념을 구현(실제로 실현)하는 핵심 기능들 중 하나라는 내용이 있었다. 이는 객체지향성 개념의 속성+동작을 의미하는 것인지 혹은 객체지향 개념 중 은닉성을 의미하는 것인지는 확실하지 않다. 개인적으로는 현실을 코드로 표현하고자 했다는 객체지향의 개념을 구현했다라는 의미로 받아들였다.

세번째로. 정보은닉이 아닌 접근은닉을 위해서라는 것이었다. 확실히 private를 하면 단번에 해당 멤버에 접근할 수는 없다. 그러나 이 또한 getter나 setter를 통해 접근할 수 있기 때문에 완벽한 답변은 아니라고 생각한다.

결론

결론적으로 나는 그리고 기존 클래스를 만들어왔던 관행을 이어감으로써 자신이 아닌 다른 사람들이 사용할 때 코드의 의미 전달을 보다 명확히 하고자 private을 쓴다는 느낌을 받았다. 그 외에 기능적인 측면에서 큰 의미가 있다고 생각되지는 않기 때문이다. 이것이 지금으로써 나의 결론이며, 더 배운 후에 또 다른 해석을 할 수 있기를 바래본다.



참고 사이트 : https://kldp.org/node/61904

profile
Done is better than perfect🔥

0개의 댓글