Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

java : qu'est-ce une interface ?

6 réponses
Avatar
J'ai lu dans mon livre java qu'" une interface est un jeu de méthodes
indiquant qu'une classe prend en charge plus de comportements qu'elle n'en a
hérité de ses super-classes."

Qui peut m'expliquer le sens de cette définition ?

Merci

6 réponses

Avatar
KiLVaiDeN
<chopin> wrote in message news:4181a21e$0$29566$
J'ai lu dans mon livre java qu'" une interface est un jeu de méthodes
indiquant qu'une classe prend en charge plus de comportements qu'elle n'en
a

hérité de ses super-classes."

Qui peut m'expliquer le sens de cette définition ?

Merci




Une interface permet à une classe qui l'implémente de fournir un
comportement "standard". Exemple : une classe, qui implémente l'interface
"Serializable" pourra donc être elle même Serializable. Pour implémenter une
interface, il faut écrire le corps des méthodes de celle-ci dans ta classe
qui implémente les interfaces. Un autre exemple, si tu as besoin que ta
classe soit triable par les fonctions "sort" de Java, il faut qu'elle
implémente l'interface "Comparable".

K

Avatar
Bruno Jouhier
Une classe, c'est un nom commun.
Une interface, c'est un adjectif qualificatif.

Un nom commun, ça correspond à une certaine implémentation (si on prend
"chien" par exemple, ça a un squelette, un système nerveux, un système
digestif, une tête, 4 pattes, (hérités de "mammifère" ou de plus haut dans
la hiérachie), des crocs (hérité des canidés), etc.). Et ça a aussi un
certain nombre de comportements, plus ou moins spécifiques: ça mange (comme
tous les animaux), ça aboie, ça fait le beau (ça, c'est plus spécifique).

Un adjectif, ça indique la présence d'un certain nombre de caractéristiques
et de comportements, sans imposer une implémentation. Par exemple, les
objets "volant" partagent des comportements (ils décollent, ils volent, ils
se posent) mais avec des implémentations très différentes (un oiseau, une
chauve souris, un avion, un hélicoptère).

D'un point de vue plus technique, on pourrait résumer ça comme suit:

Une classe, c'est une implémentation particulière, qui peut éventuellement
hériter d'une autre implémentation (et c'est récursif), et qui peut être
complète ou incomplète (abstract -- mammifère est un bon exemple).

Une interface, c'est une pure spécification. Ca définit un certain nombre de
méthodes que les objets doivent implémenter pour supporter l'interface en
question. Une spécification peut parfois être définie comme l'union de
plusieurs spécifications plus fines.

Le lien avec nom/adjectif n'est pas anodin, il est fondammental, et il
justifie (a posteriori) un des choix faits par Java, qui est de n'avoir que
de l'héritage simple entre les classes mais de l'héritage multiple au niveau
des interfaces. Quand vous définissez un nom, vous le définissez en général
de la manière suivante:

un oiseau est un animal volant, ovipare, ...
un nomA est un nomB adjA adjB

Vous définissez très rarement un nom sous la forme:

un oiseau est un animal et un ....
un nomA est un nomB et un nomC

En résumé, nous définissons naturellement un concept comme héritant d'un
concept parent, et lui accolant un certain nombre d'adjectifs.

Les interfaces, ce sont les adjectifs de Java (d'ailleurs elles ont souvent
des adjectifs pour nom: comparable, sérializable, énumérable, ...).

Bruno.


<chopin> a écrit dans le message de news:
4181a21e$0$29566$
J'ai lu dans mon livre java qu'" une interface est un jeu de méthodes
indiquant qu'une classe prend en charge plus de comportements qu'elle n'en
a
hérité de ses super-classes."

Qui peut m'expliquer le sens de cette définition ?

Merci




Avatar
Miguel Moquillon
Le Fri, 29 Oct 2004 03:51:25 +0200, chopin a écrit :

J'ai lu dans mon livre java qu'" une interface est un jeu de méthodes
indiquant qu'une classe prend en charge plus de comportements qu'elle n'en a
hérité de ses super-classes."

Qui peut m'expliquer le sens de cette définition ?
Définissons d'abord le contour pour comprendre certaines choses.

Java est à langage objet. Dans les langages objet, il fait partie, au
même titre que C++ d'ailleurs, des langages à type (langages qui sont
centrés sur le sous-typage). Dans cette conception, le typage est
distingué de la classification ; on parle même de dualité type/classe.
Le type définit syntaxiquement et sémantiquement les propriétés des
objets du type, et la classe fournit une implémentation de ces
propriétés.
Maintenant, qu'est ce qu'un type en conception objet ? Le type d'un objet
est l'ensemble des définitions syntaxiques et sémantiques de ses
propriétés visibles/exportées ; c'est donc l'interface de cet objet. En
java, l'"interface" permet donc, entre autre, de modéliser les types des
objets ; modélisation limitée car on ne peut décrire que syntaxiquement
les propriétés. La classe va alors apporter une implémentation possible
de cet "interface".
Exemple dans l'API Java :
l'"interface" java.util.List permet de définir le type des listes.
Les classes java.util.ArrayList et java.util.LinkedList définissent une
implémentation possible des listes : le premier sous forme de tableau
(ensemble de "cases" mémoires linéaires et contiguës), le second sous
forme de liste chaînée ("cases" mémoires non contiguës et qui
contiennent entre autre l'adresse mémoire de la case suivante).

L'"interface" en Java permet aussi de représenter, comme pour les
"protocole" d'ObjC, un protocole de communication : un ensemble de
signatures de méthodes qui permet de communiquer avec les objets qui
comprennent ce moyen (protocole) de communication (donc les objets dont
leur classe d'appartenance fournit une implémentation possible de ces
méthodes). Ceci en dehors même du concept de typage.

Miguel

Avatar
Black Myst
chopin wrote:
J'ai lu dans mon livre java qu'" une interface est un jeu de méthodes
indiquant qu'une classe prend en charge plus de comportements qu'elle n'en a
hérité de ses super-classes."

Qui peut m'expliquer le sens de cette définition ?

Merci




http://java.developpez.com/faq/java/?page=langage_notions#NOTION_interface

Avatar
JavaBlues
Une interface est un ensemble de constantes et de déclaration de méthodes
correspondant un peu à une classe abstraite.
C'est une sorte de standard auquel une classe peut répondre. Tous les
objets qui se conforment à cette interface (qui implémentent cette
interface) possèdent les méthodes et les constantes déclarées dans celle-ci.
Plusieurs interfaces peuvent être implémentées dans une même classe.

Les interfaces se déclarent avec le mot cle "interface" et sont intégrées
aux autres classes avec le mot clé "implements". Une interface est
implicitement déclarée avec le modificateur "abstract".

Syntaxe:
[public] interface nomInterface [extends nom Interface1, nomInterface2, ...]
{
// méthodes ou champs static
}

Implémentation d'une interface
------------------------------

Modificateurs class nomClasse [extends superClass] [implements
nomInterface1, nomInterface2, ...] {
// méthodes et champs
}

Exemple:
---------

interface AfficheType{
void AfficheType();
}

class A implements AfficheType {
public void afficheType {
system.out.println("Je suis A");
}
}
class B implements AfficheType {
public void afficheType() {
system.out.println("Je suis B");
}
}

"Black Myst" <Black_point_myst_chez_free_fr> a écrit dans le message de
news: 418215ee$0$3593$
chopin wrote:
J'ai lu dans mon livre java qu'" une interface est un jeu de méthodes
indiquant qu'une classe prend en charge plus de comportements qu'elle
n'en a


hérité de ses super-classes."

Qui peut m'expliquer le sens de cette définition ?

Merci




http://java.developpez.com/faq/java/?page=langage_notions#NOTION_interface



Avatar
Merci à tous (KilVaiDen, Bruno, Miguel, Black Myst et à JavaBlues)
pour réponses que vous m'avez apportées et surtout de leur qualité.
Egalement pour le temps que vous y avez consacré et qui n'était
sûrement pas négligeable.


"JavaBlues" a écrit dans le message de
news:418258ab$0$1415$
Une interface est un ensemble de constantes et de déclaration de méthodes
correspondant un peu à une classe abstraite.
C'est une sorte de standard auquel une classe peut répondre. Tous les
objets qui se conforment à cette interface (qui implémentent cette
interface) possèdent les méthodes et les constantes déclarées dans
celle-ci.

Plusieurs interfaces peuvent être implémentées dans une même classe.

Les interfaces se déclarent avec le mot cle "interface" et sont intégrées
aux autres classes avec le mot clé "implements". Une interface est
implicitement déclarée avec le modificateur "abstract".

Syntaxe:
[public] interface nomInterface [extends nom Interface1, nomInterface2,
...]

{
// méthodes ou champs static
}

Implémentation d'une interface
------------------------------

Modificateurs class nomClasse [extends superClass] [implements
nomInterface1, nomInterface2, ...] {
// méthodes et champs
}

Exemple:
---------

interface AfficheType{
void AfficheType();
}

class A implements AfficheType {
public void afficheType {
system.out.println("Je suis A");
}
}
class B implements AfficheType {
public void afficheType() {
system.out.println("Je suis B");
}
}

"Black Myst" <Black_point_myst_chez_free_fr> a écrit dans le message de
news: 418215ee$0$3593$
chopin wrote:
J'ai lu dans mon livre java qu'" une interface est un jeu de méthodes
indiquant qu'une classe prend en charge plus de comportements qu'elle
n'en a


hérité de ses super-classes."

Qui peut m'expliquer le sens de cette définition ?

Merci





http://java.developpez.com/faq/java/?page=langage_notions#NOTION_interface