Maison > Java > javaDidacticiel > Pourquoi les méthodes statiques n'étaient-elles pas autorisées dans les interfaces Java avant Java 8 ?

Pourquoi les méthodes statiques n'étaient-elles pas autorisées dans les interfaces Java avant Java 8 ?

DDD
Libérer: 2025-01-05 02:24:39
original
834 Les gens l'ont consulté

Why Were Static Methods Not Allowed in Java Interfaces Before Java 8?

Pourquoi ne puis-je pas définir une méthode statique dans une interface Java ?

Dans Java 8 et versions ultérieures, les méthodes statiques sont autorisé dans les interfaces. Ce n'était pas le cas dans les versions précédentes, laissant de nombreux programmeurs se demander pourquoi.

Java 8 et méthodes d'interface statique

Java 8 a introduit des méthodes d'interface statique en plus du remplacement. Méthodes d'instance compatibles avec des implémentations par défaut. Les interfaces peuvent désormais inclure des méthodes statiques, mais ne peuvent toujours pas avoir de champs d'instance.

Méthodes statiques et remplacement

Les méthodes statiques ne peuvent pas être remplacées car elles sont résolues au moment de la compilation. . Cela signifie que le compilateur peut déterminer la classe et la méthode exactes à appeler sans consulter une instance d'objet. La répartition dynamique des méthodes d'instance est nécessaire car le compilateur ne peut pas déterminer le type précis de l'objet au moment de l'exécution.

Contrairement aux méthodes d'instance, les méthodes statiques sont directement associées à une classe. Cela élimine le besoin de répartition dynamique, car le compilateur connaît déjà la classe et la méthode requises. Par conséquent, le remplacement des méthodes statiques est inutile et peu pratique.

Constructeur "Interfaces"

L'application d'une méthode de fabrique obligatoire pour les implémentations IXMLifiables peut être réalisée sans utiliser d'interface. . Le code qui utilise la méthode factory peut spécifier explicitement le type concret, permettant au compilateur de vérifier la conformité.

Si une implémentation IXMLalisable sans le « constructeur » est créée et transmise au code qui l'attend, le code la reconnaît toujours comme un IXMLizable valide. En effet, la construction est un détail d'implémentation et ne fait pas partie de l'interface. Tout code qui interagit avec l'interface seule n'est pas affecté.

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!

source:php.cn
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