2ebcc077abc236a14e81d2b628f1716ebc98


위와 같은 클래스를 보면 클래스의 메서드가 모두 public 제어자로 되어있음

이말인 즉슨, 외부에서 클래스의 객체를 사용하는 코드는 저 3개의 메서드에 의존하게 된다는 소리고

만약 Process 클래스를 수정이라도 한다면, 의존관계 때문에 방대한 코드 수정이 필요하게 된다는 뜻





2ebcc074abc236a14e81d2b628f1756be6b2cf

하지만 이렇게 메서드를 private 제어자로 은닉하고

public 공개 메서드로 감싸면, 은닉 메서드의 수정이 이루어져도 방대한 코드베이스 수정이 필요없고

어떤 메서드를 우선 살펴야 하는지 알수있으며

개별 메서드간의 호출순서를 관리할 수 있다

이것이 바로 캡슐화





2ebcc075abc236a14e81d2b628f1766b314210


이렇게 객체간 의존성은 오직 캡슐화를 통한 공개 메서드를 통해 이루어지는데

이때 인터페이스와 연동시키면 업캐스팅으로 인한 멤버 제한 요소도 사라지면서

실질적 클래스 간의 의존관계도 해소가 가능하다



맞나?


코드는 Inpa Dev 블로그 펌