Maison >Java >javaDidacticiel >Objets de référence d'élément via leurs interfaces
Préférence pour les interfaces comme types de référence :
Si une interface appropriée existe, vous devez référencer les objets via celle-ci au lieu de la classe concrète.
Cela s'applique aux paramètres, aux valeurs de retour, aux variables et aux champs.
Flexibilité dans l'utilisation des interfaces :
L'utilisation d'interfaces vous permet de modifier l'implémentation sans affecter le code.
Exemple : passer de LinkedHashSet à HashSet ou TreeSet, changez simplement le constructeur.
Quand NE PAS utiliser les interfaces :
Fonctionnalité spécifique à l'implémentation :
Si une implémentation propose quelque chose qui n'est pas requis par l'interface (par exemple, LinkedHashSet garantit l'ordre d'itération, mais pas HashSet).
Sans interface appropriée :
Certaines classes comme String ou BigInteger n'ont pas d'interfaces équivalentes et doivent être utilisées directement.
Cadres basés sur les classes :
Exemple : OutputStream dans le package java.io est référencé via une classe abstraite, pas une interface.
Méthodes spécifiques à la mise en œuvre :
Exemple : PriorityQueue implémente Queue, mais possède une méthode comparator() non présente dans Queue. N'utilisez la classe que si vous avez besoin de cette méthode supplémentaire.
Avantage :
L'utilisation d'interfaces rend le programme plus flexible et modulaire, vous permettant de modifier facilement les implémentations sans casser le code existant.
Exemples de code
Bon exemple : utiliser l'interface comme type
Set<String> s = new LinkedHashSet<>();
Mauvais exemple : Utiliser la classe concrète comme type
LinkedHashSet<String> s = new LinkedHashSet<>();
Flexibilité : Changer l'implémentation sans affecter le code
Set<String> s = new TreeSet<>();
Exemple d'utilisation d'une classe finale comme String
String str = "Hello";
Exemple d'utilisation d'une classe de base du framework
OutputStream output = new FileOutputStream("file.txt");
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!