Accueil
Java Standard Edition
Java EE 5
Visual Basic .Net 2005
Visual C++ .Net 2005
Visual C# .Net 2005
Cours ASP .Net 2.0
Postgresql
Linux
Visual Studio 2008
ASP 3.0 Classique
Cours Javascript - DOM - DHTML
Cours Ajax
VBA
Assembleur
Perl
Membres
L'auteur du site
Nouveautés sur le site
Contacts
Plan du site
Exécution d'un programme
Les archives Jar
Les classes abstraites
Les interfaces
Les tableaux
La généricité
Les énumérations
Les classes internes
Classes anonymes et internes locales
Les threads: généralités
Les threads(2): synchronisation
E/S(1):InputStream et OutputStream
E/S(2):FileInputStream et FileOutputStream
E/S(3):Reader et Writer
E/S(4):FilterInputStream et FilterOutputStream
E/S(5):Les filtres d'octets: PrintStream
E/S(6):Les filtres d'octets: DataInputStream et DataOutputStream
E/S(7):Les filtres d'octets: BufferedInputStream et BufferedOutputStream
E/S(8):Flux de caractères: PrintWriter
E/S(9):Flux de caractères: FilterReader et FilterWriter
E/S(10):Flux de caractères: InputStreamReader, OutputStreamWriter, StreamDecoder, StreamEncoder
E/S(11):Flux de caractères: BufferedReader et BufferedWriter
E/S(12):Flux de caractères: FileReader et FileWriter
La classe String (java.lang)
Les collections: L'interface Collection(java.lang)
Les collections(2): L'interface List(java.util)
Les collections(3): AbstractCollection(java.util)
Les collections(4): AbstractList(java.util)
Les collections(5): Vector(java.util)
Les collections(6): L'interface Map(java.util)
Les collections(7): AbstractMap(java.util)
Les collections(8): HashMap(java.util)
La bibliothèque Swing en Java
Les bases de données en Java
JDBC ( Java Database Connectivity )
Les interfaces graphiques
Les fichiers de configuration en Java
INSTALLATION JAVA EE 5, JRE 6, ECLIPSE, TOMCAT, ETC SOUS LINUX
INSTALLATION JAVA EE 5, JRE 6, ECLIPSE, TOMCAT, ETC SOUS WINDOWS
Les applications Web en java
Les filtres Java (javax.servlet.Filter)
I Généralités
I.1 Le formulaire principal
I.2 Les objets créés par Visual
I.3 Les variables références
I.4 Le garbage collector
II Créer évènements
II.1 Rappel évènements
II.2 Procédure à suivre
II.2.1 Créer son EventArgs
II.2.2 Créer EmetEvent
II.2.3 Déclarations autres
I Généralités
I.1 Applications winforms
I.2 Applications MFC
I.3 Objets managés ou pas
I.4 Objets non managés
I.5 Objets managés - handle
I.6 Le top-level ^
II Créer évènements
II.1 Rappel évènements
II.2 Procédure à suivre
II.2.1 Créer son EventArgs
II.2.2 Créer EmetEvent
II.2.3 Déclarations autres
I Généralités
I.1 Puissant et Accessible
I.2 Créer ses classes
II Créer évènements
II.1 Rappel évènements
II.2 Procédure à suivre
III Les services Windows
IV Le .net remoting
V Communication Tcp avec TcpClient et TcpListener
II.2.1 Créer son EventArgs
II.2.2 Créer EmetEvent
II.2.3 Déclarations autres
I Généralités
I.1 Un EDI formidable
I.2 Inclure C# ou VB
I.3 L'objet Response
I.4 Les évènements
II ASP .net et les bdd
II.1 Essayer plusieurs fois la requête
I 2.1 Fichiers distincts
I.2.2 Avec la balise script
I.2.3 Inclure réellement
I.2.4 Avec Response.Write()
I.3.1 La méthode Response.Redirect()
I.4.1 Résoudre problème post
Installation Postgre Linux
Cours Postgresql
Le Shell Unix( Linux, Ubuntu)
Les scripts C-Shell
Programmation système Unix
Reseau Linux
Les iptables
Windows Presentation Foundation(WPF)
Le Framework 3.0
Windows Workflow Foundation(WF)
ASP 3.0 Classique
Cours Javascript - DOM - DHTML
Chat Ajax
VBA Excel 2003
Assembleur
Perl
Inscription
Liste membres
Livre d'or
Forum
Accueil
>
Java Standard Edition
>
Les interfaces
____________________________________________________________________________________________________
Connexion
Java - Les interfaces
Sommaire :
I)Création d'une interface
II)Attributs d'une interface
III)Remarques
IV)Explications du projet d'exemple
V)Code source complet du projet TestInterface
V-1)Interface Affichable(package interfaces)
V-2)Classe Personne(package personne)
V-3)Classe Main(package main)
VI)Téléchargement du projet d'exemple
I)Création d'une interface
public interface Affichable { public void afficher(); }
Toutes les classes implémentant cette interface s'engagent à avoir une méthode "afficher". Une interface est un engagement, un contrat.
A l'intérieur de la déclaration de l'interface, on trouve la liste des signatures des méthodes, avec un modificateur de visibilité, qui sera forcément publique: "public" ou rien(par défaut quand on écrit rien: c'est public, et non friendly).
Le contenu de l'interface est essentiellement la liste des méthodes.
II)Attributs d'une interface
Une interface peut avoir des attributs, mais ils n'ont pas le même sens du tout des méthodes qu'on déclare dans une interface. C'est-à-dire que ce ne sont pas des attributs qu'on devrait implémenter. Ce sont des attributs, forcément static, et qui appartiennent vraiment à l'interface elle-même.
Une interface ne peut avoir que des attributs statiques( mais on n'écrit pas 'static'). On accède à l'attribut comme d'habitude pour les static: nom de l'interface suivi du nom de l'attribut.
Et il est obligatoirement une constante(final, mais on ne le dit pas).
On ne peut pas les déclarer private, bien entendu, car personne, dans l'interface, ne pourrait les demander, car il n'y a pas de code dans les méthodes.
Exemple: public int CONSTANTE= 20;
On y accède, pour qui en a besoin, par exemple par Affichable.CONSTANTE .
Le rôle est donc juste de fournir une possibilité de constantes propres à l'interface, ce qui peut être pratique.
III)Remarques
- Une interface peut être étendue (avec extends et non implements) par une ou plusieurs interfaces, c'est à dire que l'interface hérite des méthodes de l'interface mère, comme un héritage classique.
- Une classe peut implémenter plusieurs interfaces, ce qui permet de faire une sorte d'héritage multiple (sinon on ne pourrait pas du tout en faire).
- Une interface peut être implémentée par une ou plusieurs classes, bien sûr.
IV)Explications du projet d'exemple
Le projet TestInterface est composé d'une interface Affichable.
Cette interface Affichable contient une seule méthode, la méthode afficher()
package interfaces; public interface Affichable { /** * Cette attribut est forcément statique( donc pas * de modificateur de visibilité à mettre). * Et il est forcément constant (final). */ public int CONSTANTE= 20; /** * Afficher affiche l'objet. Il s'agira * d'afficher ses attributs, en tous cas les principaux. */ public void afficher(); }
La méthode afficher() affiche l'objet, c'est-à-dire ses attributs.
Une classe implémentant l'interface Affichable signifiera qu'on pourra afficher ses objets.
L'interface est très pratique pour apporter une capacité, ici la capacité de pouvoir afficher l'objet. Et c'est pour cette raison d'ailleurs qu'il est pratique de les appeler avec des noms se terminant par "able".
- Une interface peut être complètement vide, comme par exemple java.io.Serializable:
package java.io; public interface Serializable { }
Ceci a un intérêt, celui de pouvoir imposer "d'hériter" de Serializable, même si on impose aucune méthode à implémenter.
V)Code source complet du projet TestInterface
V-1) Interface Affichable(package interfaces)
package interfaces; public interface Affichable { /** * Cette attribut est forcément statique( donc pas * de modificateur de visibilité à mettre). * Et il est forcément constant (final). */ public int CONSTANTE= 20; /** * Afficher affiche l'objet. Il s'agira * d'afficher ses attributs, en tous cas les principaux. */ public void afficher(); }
V-2)Classe Personne(package personne)
package personne; import interfaces.Affichable; public class Personne implements Affichable { private String pseudo; /** * Age de la personne */ private int age; /** * Taille de la personne, en cm */ private int taille; /** * Constructeur * @param pPseudo Pseudo de la personne * @param pAge Age de la personne * @param pTaille Taille de la personne, en cm */ public Personne( String pPseudo, int pAge, int pTaille) { setPseudo(pPseudo); setAge(pAge); setTaille(pTaille); } /** * Methode de l'interface Affichable */ public void afficher() { System.out.println("-----------"); System.out.println("Pseudo: " + getPseudo()); System.out.println("Age: " + getAge()); System.out.println("Taille: "+getTaille()); System.out.println("-----------"); /* juste pour tester les attributs des interfaces */ System.out.println("Pour tester: la constante de l'interface = " + Affichable.CONSTANTE); } //Accesseurs public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getTaille() { return taille; } public void setTaille(int taille) { this.taille = taille; } public String getPseudo() { return pseudo; } public void setPseudo(String pseudo) { this.pseudo = pseudo; } }
V-3)Classe Main(package main)
* package main: Classe Main.java: package main; import personne.Personne; public class Main { /** * @param args */ public static void main(String[] args) { Personne jeannot = new Personne("jeannot", 21, 180); jeannot.afficher(); } }
VI)Téléchargement du projet d'exemple
Projet d'exemple, V1.1
RETOUR HAUT