기능을 축소하는 방향으로 상속하기 VS 기능을 추가하는 방향으로 상속하기

기능을 축소하는 방향으로 상속하기 VS 기능을 추가하는 방향으로 상속하기
STL의 예로 tuple <- pair, vector <- stack이 있다. 하위 클래스들이 각각 부모의 기능을 제한하는 것으로 해당 기능을 달성한다.
JAVA의 예로 모든 객체는 java.Object를 상속한다. 하지만 서로다른 기능들로 확장된 것으로 각자의 목적을 달성하고 있다.
사실 둘 간의 차이점을 구별하지 못하겠다. 사실 기능을 축소한다는 것도 넓게 보면 플러그인처럼 기능을 확장하는 것으로 보아야 할까?