[Java] 접근제한자 쓰는 이유

cateto·2021년 1월 14일
1
post-thumbnail

객체 지향 프로그래밍의 장점인 캡슐화를 위해 ,

그리고 클래스의 고유성을 위해 ,

쓸데 없는 정보는 제공하지 않기 위해 ,

대부분의 field 선언 변수에 private를 쓰게되는 습관이 있다.

private는 class 안에서,
default는 한 package 안에서,
protected는 한 class, 한 package, 상속받은 subclass 안에서,
oublic은 클래스 all에서,

접근 가능하다고 외웠는데(?)
외운 것 치고 public, private만 주구장창 쓰고
protected는 잘 안쓰게되는 것 같다.

protected의 존재 이유는 뭘까 ?

대다수의 글에서 이렇게 말한다. (네티즌 여러분 이 의견에 대해서는 댓글로 건설적 비판 바랍니다!)

public의 경우 그 자체로 완결된 메서드...
그러나 protected의 경우 상속시에 override해야하는 가능성을 열어둔 것
"필요하다면 구현하시오~!"

어떤 측면에서는 javascript에서 const를 쓰듯이 데이터의 무결성을 보장.
"이 데이터를 쉽게 바꾸려하지마시오~!"

cf. 일반적으로 protected api는 외부 패키지에서 상속을 하지 않는 이상 사용될 수 없다고 알려져 있지만, 실제로는 Reflection API를 통해 사용이 가능하다. 그만큼 reflection API는 OOP를 깨버릴 만큼 강력한 API인 셈이다.

참고 :
https://m.blog.naver.com/PostView.nhn?blogId=2feelus&logNo=220576845725&proxyReferer=https:%2F%2Fwww.google.com%2F
(좋은 생각이 나게한다.)
https://kldp.org/node/48605
(댓글로 토론의 장이 열렸당.)

profile
Curious for Everything

0개의 댓글