객체의 내부 상태는 외부에서 접근하지 못하도록 감춰야 한다. 대신 외부에 공개하는 퍼블릭 인터페이스를 통해 내부 상태에 접근할 수 있도록 허용한다.
객체가 다른 객체와 사용호작용할 수 있는 유일한 방법은 메시지를 전송하는 것 뿐이다.
중복 코드를 제거하기 위한 목적으로 공통의 코드를 보관할 수 있는 장소를 추상클래스로 구현할 수 있다.
부모 클래스에 기본적인 알고리즘의 흐름을 구현하고 중간에 필요한 처리를 자식 클래스에게 위임하는 디자인 패턴을 TEMPLATE METHOD 패턴이라고 부른다.