Bonjour, je ne comprend pas un concept fondamentale en java concernant les interfaces. Je précise que je suis un débutant invétéré.

Voilà j'ai compris le fonctionnement des classes, par exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Personne p = new Personne();
Donc la on instancie un objet de type Personne dont la référence s'appelle p.

Ce que je ne comprend pas c'est pourquoi on fait un peu la même chose avec les interfaces. Je pensais qu'on ne pouvait pas instancié une interface, ou déclarer une référence à partir d'une interface, je pensais qu'on ne pouvait que l'implémenter... bref je suis bien perdu

Je m'explique avec un exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Iterator it = maCollection.iterator();
Ici par exemple je ne comprend pas pourquoi on déclare une référence it dont le type est l'interface Iterator
maCollection.iterator() me retourne un objet de type Iterator, et pourtant au lieu d'utiliser la classe Iterator, on utilise l'interface Iterator pour la variable it...

De la même manière, j'ai compris au niveau de l'architecture d'une application que les couches dialoguaient entres elles grâce aux interfaces pour pouvoir modifier facilement l'implémentation de celle ci. Mais je ne comprend pas par exemple, la synthaxe suivante (tiré du cours web3tiers p.11 dans les tutos du site):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
private IArticlesDao articlesDao;
Il y a marqué qu'il s'agit de l'objet d'accès aux données fourni par la couche d'accès aux données

Vous voyez un peu mon niveau

Merci de m'éclairer un peu...