Toda Servlet herda de HttpServlet?

Até onde eu vi numa apostila da Caelum, toda Servlet que fiz, herda de HttpServlet. Quando seguimos o modelo MVC isso sempre acontece? Essa herança acontece porque?

Nada impediria de você ter uma Servlet que herdasse de GenericServlet e falasse um outro protocolo em vez de http (ou https, que é apenas http sob SSL).

http://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/GenericServlet.html

Mas na prática todas as servlets são filhas, ou netas, ou bisnetas de HttpServlet.

certo, então no caso qualquer servlet que for utilizada por uma jsp é uma HttpServlet ou uma descendente dela, por isso esse tipo de herança?

É.

Muito boa resposta, agora sim eu entendo porque usá-lo. Agora sobre a herança da classe HttpServlet tenho uma questão.

Você pode implementar o método service(HttpServletRequest request, HttpServletResponse response). Esses dois parâmetros servem pra que? E porque eu preciso passa-los também como parâmetro quando eu utilizo o método forward de um RequestDispatcher?

Mais uma coisa (carinha chato rsrs), no Eclipse ele me diz que [b]RequestDispatcher[\b] é uma interface, e pelo que eu sabia, interfaces não podem ser instanciadas, apenas implementadas (me corrijam se estiver errado), então porque a linha abaixo é válida?

RequestDispatcher rd = request.getRequestDispatcher("/contato-adicionado.jsp");