Interface do Java

Olá Galera,
eu ñ consegui enteder
direito muito bem
JAAFSession é uma interface

JAAFSession session = user.getSession();

nessa linha de código eu crio uma sessão
e pego a sessão do usuário, uma coisa q eu
ñ entendi é se session vai ser um objeto
de uma interface?
Porque quando eu tenho um objeto de uma classe tudo
bem, mas um objeto de uma interface
eu ñ sei se é isso msm?

Será q alguém poderia me ajudar com está dúvida?

[]`s

Na verdade não é um objeto da interface, e sim um objeto de uma CLASSE que IMPLEMENTA a interface. Por exemplo:

List <Object> = new ArrayList<Object>(); // não instancio a interface e sim uma classe que a implementa

Para começar, não existe um “objeto de uma interface”. Todo objeto pertence a uma classe, e esta implementa zero ou mais interfaces.

Quando você tem uma variável cujo tipo é uma determinada interface (exemplo: javax.servlet.ServletRequest), você pode atribuir a essa variável uma referência a um objeto que pertence a uma classe que implementa essa interface (por exemplo, um objeto que pertence à classe org.apache.tomcat.catalina.HttpServletRequestImplementation ou coisa parecida.)

Mas a variável não precisa saber qual é a classe certa desse objeto; só precisa saber se o tal objeto pertence a uma classe que implementa essa interface, para chamar apenas os métodos descritos nessa interface. OK?

Valeu e muito obrigado pela ajuda
marco e thingol agora ficou mais
claro o entendimento.

Abraços.

Uma coisa que se confunde muito é um objeto com uma variável.

Em Java não podemos confundir objetos com variáveis, sob pena de nunca realmente conseguirmos aprender a programar Java.

A regra é: Variáveis contém referências a objetos, e um mesmo objeto pode ser referido por várias variáveis, que podem ser ou não do mesmo tipo (classe ou interface).