Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
The moose likes Java in General and the fly likes How come interfaces can be instantiated? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "How come interfaces can be instantiated?" Watch "How come interfaces can be instantiated?" New topic

How come interfaces can be instantiated?

Francois Yergeau

Joined: Oct 15, 2003
Posts: 3
I am a newcomer in JavaWorld, but I thought I understood from a book (Head First Java) that interfaces, if not implemented, cannot be instantiated. But I am afraid my understanding was wrong, since, for example, a servlet container can create a ServletRequest object, and ServletRequest is not a class but an interface. How can a ServletRequest be instantiated? Since none of its methods are implemented, how can it do anything?
Ernest Friedman-Hill
author and iconoclast

Joined: Jul 08, 2003
Posts: 24193

Hi Francois,
Welcome to JavaRanch!
You were right the first time. Interfaces cannot be instantiated. A servlet container doesn't create ServletRequest objects -- it creates an instance of some class like org.apache.catalina.HttpServletRequestImpl that implements that interface.
Part of writing a servlet container (or a JDBC driver, or any other API that involves interfaces) is providing implementations for all those interfaces.
Get it?
[ October 15, 2003: Message edited by: Ernest Friedman-Hill ]

[Jess in Action][AskingGoodQuestions]
VIJAY Yadlapati
Ranch Hand

Joined: Aug 04, 2003
Posts: 175
An interface could not be instantiated, but it can hold the instance of a class that implements that interface.
I agree. Here's the link:
subject: How come interfaces can be instantiated?
jQuery in Action, 3rd edition