Dans l'encapsulation et les interfaces, le mot-clé private encapsule les membres internes de l'objet. Après encapsulation, le produit masque les détails internes et ne fournit que l'interface utilisateur.
L'interface est un concept très utile qui peut aider notre pensée abstraite. Dans la vraie vie, lorsque nous pensons à un certain appareil, nous pensons souvent à l'interface fonctionnelle de l'appareil. Par exemple, avec une tasse, nous pensons plus à la possibilité d'ajouter de l'eau et de boire de l'eau qu'au matériau et au prix de la tasse. En d’autres termes, dans une certaine mesure, l’interface de l’appareil est équivalente à l’appareil lui-même. Les détails internes ont été écartés du processus de réflexion.
une tasse en tête
Dans les mécanismes d'encapsulation publics et privés, nous définissons en fait des classes et des interfaces en même temps, et les classes et les interfaces sont mélangées. Java fournit également la syntaxe de l'interface. Cette syntaxe sépare l'interface de la définition spécifique de la classe et forme un corps indépendant.
interface
En prenant une tasse comme exemple, définissez une interface de tasse :
Copiez le code comme suit :
interface Coupe {
void addWater(int w);
void drinkWater(int w);
}
L'interface Cup définit les prototypes de deux méthodes : addWater() et drinkWater(). Le prototype d'une méthode spécifie le nom de la méthode, la liste des paramètres et le type de retour. Les prototypes peuvent indiquer au monde extérieur comment utiliser ces méthodes.
Dans l'interface, nous
1. Pas besoin de définir le corps de la méthode
2. Il n'est pas nécessaire de préciser la visibilité de la méthode
Notez le deuxième point, les méthodes de l'interface sont publiques par défaut. Comme nous l'avons mentionné dans Encapsulation et Interfaces, les méthodes publiques d'une classe constituent une interface. Par conséquent, toutes les méthodes qui apparaissent dans l’interface sont publiques par défaut.
On peut implémenter l'interface dans la définition d'une classe, comme la MusicCup ci-dessous (une tasse qui peut jouer de la musique) :
Copiez le code comme suit :
la classe MusicCup implémente Cup
{
public void addWater (int w)
{
ceci.eau = ceci.eau + w;
}
public void drinkWater(int w)
{
this.water = this.water - w;
}
eau int privée = 0 ;
}
Nous utilisons le mot-clé Implements pour implémenter l'interface. Une fois qu'une interface est implémentée dans une classe, toutes les méthodes de l'interface (addWater() et drinkWater()) doivent être définies dans la classe. Les méthodes de la classe doivent correspondre aux prototypes de méthodes de l'interface. Sinon, Java signalera une erreur.
D'autres méthodes publiques non mentionnées par l'interface peuvent être définies dans la classe. En d’autres termes, interface spécifie une interface minimale qui doit être implémentée. Par exemple, la méthode waterContent() suivante ne spécifie pas de prototype dans l'interface Cup :
Copiez le code comme suit :
la classe MusicCup implémente Cup
{
public void addWater (int w)
{
ceci.eau = ceci.eau + w;
}
public void drinkWater(int w)
{
this.water = this.water - w;
}
public int waterContent()
{
retournez this.water;
}
eau int privée = 0 ;
}
La signification des interfaces séparées
Nous avons utilisé une interface, mais cette interface n'a pas réduit notre charge de travail lors de la définition des classes. Nous devons toujours écrire des cours spécifiquement comme avant. Il faut même faire plus attention à ne pas violer les règles de l'interface. Dans ce cas, pourquoi utilisons-nous l’interface ?
En fait, l’interface s’apparente à un standard de l’industrie. Une usine (classe) peut adopter ou non les normes de l'industrie (implémenter l'interface). Cependant, un produit qui adopte les normes de l’industrie présentera les avantages suivants :
1. Qualité supérieure : les tasses sans fonction d'ajout d'eau ne répondent pas aux normes.
2. Promotion plus facile : tout comme l’interface USB d’un ordinateur, les produits en aval peuvent être connectés plus facilement.
Si nous disposons déjà d'un programme Java, il est utilisé pour traiter des objets conformes à l'interface Cup, comme faire boire de l'eau aux enfants. Ensuite, tant que nous sommes sûrs d'implémenter l'interface Cup pour la tasse (objet) de l'enfant, nous pouvons garantir que l'enfant peut effectuer l'action de boire de l'eau. Quant à la façon dont cette tasse (objet) définit spécifiquement l'action de boire de l'eau, nous pouvons laisser à la classe correspondante le soin de décider (comme boire avec une paille ou ouvrir une petite bouche pour boire).
En informatique, l’interface est un concept très important. Par exemple, tout système d'exploitation fournissant une interface UNIX peut être appelé système UNIX. Linux, Mac OS et Solaris sont tous des systèmes UNIX et fournissent des interfaces similaires. Cependant, l’implémentation spécifique (code source) de chaque système est différente les unes des autres. Linux est open source et vous pouvez visualiser chaque ligne de son code, mais vous ne savez toujours pas comment programmer un système Solaris.
Même interface UNIX
Implémenter plusieurs interfaces
Une classe peut implémenter plusieurs interfaces. Par exemple, nous avons l'interface suivante :
Copiez le code comme suit :
interface Lecteur de musique {
jeu nul();
}
Considérons à nouveau la classe MusicCup. MusicCup peut être considéré comme un hybride d’un joueur et d’une tasse.
Par conséquent, MusicCup devrait avoir deux ensembles d'interfaces, c'est-à-dire implémenter l'interface MusicPlayer et l'interface Cup en même temps :
Copiez le code comme suit :
la classe MusicCup implémente MusicPlayer, Cup
{
public void addWater (int w)
{
ceci.eau = ceci.eau + w;
}
public void drinkWater(int w)
{
this.water = this.water - w;
}
jeu vide public()
{
System.out.println("la...la...la");
}
eau int privée = 0 ;
}
Enfin, vous pouvez essayer de placer les définitions d'interface et de classe de cet article dans le même fichier, écrire la classe Test et l'exécuter.
Résumer
interface, stéréotype de méthode, public
implémente l'interface
implémente l'interface1, l'interface2