디자인할 때 구체적인 클래스보다는 추상 클래스에서 상속하려고 합니다. 상속 계층 트리를 보면 모든 리프 노드는 구체적 클래스여야 하고 모든 분기 노드는 추상 클래스 또는 인터페이스여야 합니다. 물론 이는 일반적인 지침일 뿐이며 사용 시에는 구체적인 조건을 분석해야 합니다.
간단히 이해하면 소프트웨어 엔터티가 상위 클래스를 사용하는 경우 하위 클래스에 적용 가능해야 하며 상위 클래스 개체와 하위 클래스 개체 간의 차이를 감지할 수 없습니다. 즉, 소프트웨어에서 상위 클래스가 하위 클래스로 대체되면 프로그램의 동작이 변경되지 않습니다.