Come ho già detto prima, l'oggetto che viene passato alla doGet() è un oggetto di classe X.
Da qualche parte esiste una classe (che io non so che classe è e non mi interessa, la chiamo X) così definita:
codice:
public class X extends ... implements HttpServletRequest {
...
public String getMethod() {
return qualcosa;
}
}
Ora, quando viene effettuata una richiesta, nella realtà viene fatto qualcosa del genere:
codice:
tuaServlet.doGet(new X(...), new Y(...));
La risposta alla tua domanda, quindi, diventa: lo implementa la classe X di cui noi non sappiamo niente.
Per quel che ne so può andar bene anche una HttpServletRequestWrapper (è l'unica classe che implementa l'interfaccia HttpServletRequest, per quanto riguarda la J2EE api).
E' più chiaro ora? 
Ciao.