Maison > Java > javaDidacticiel > Comment pouvez-vous simuler le concept « ami » de C en Java ?

Comment pouvez-vous simuler le concept « ami » de C en Java ?

Susan Sarandon
Libérer: 2024-11-11 05:48:03
original
487 Les gens l'ont consulté

How Can You Simulate C  's 'friend' Concept in Java?

Simuler le concept "ami" C en Java

Java n'offre pas de concept "ami" explicite comme on le voit en C qui autorise les classes à partir de différents forfaits pour accéder aux membres non publics. Cependant, une technique intelligente peut être utilisée pour reproduire ce comportement.

Réplication de "ami" C en Java

Considérons deux classes, Roméo et Juliette, dans des packages séparés. Juliette veut restreindre l'accès à ses méthodes à Roméo. En C , cela pourrait être obtenu en déclarant Roméo comme « ami » de Juliette.

En Java, un effet similaire peut être obtenu grâce à l'utilisation d'un constructeur privé et d'une référence statique.

  1. La méthode des câlins de Juliette devient publique mais nécessite un Roméo.Amour argument :
public static void cuddle(Romeo.Love love) {
    if (love == null) throw new NullPointerException();
    System.out.println("O Romeo, Romeo, wherefore art thou Romeo?");
}
Copier après la connexion
  1. Roméo définit une classe imbriquée statique publique Love avec un constructeur privé :
public static final class Love { private Love() {} }
Copier après la connexion

Seul Roméo peut construire un Romeo.Love exemple. Roméo crée ensuite une référence Romeo.Love finale statique :

private static final Love love = new Love();
Copier après la connexion
  1. Méthode cuddleJuliet de Romeo :
public static void cuddleJuliet() {
    Juliet.cuddle(love);
}
Copier après la connexion

Seul Roméo peut exécuter la méthode cuddle de Juliet car il y a accès à l'instance Romeo.Love. Les autres classes ne peuvent pas instancier Romeo.Love puisque son constructeur est privé.

Cette technique permet à Roméo d'accéder à la méthode câlin de Juliet tout en restreignant l'accès des autres classes, simulant efficacement le concept « ami » en Java, où Juliet ne fait confiance qu'à Roméo. .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal