Question

Pourquoi je ne peux pas spécifier le type statique de méthodes dans l'interface.

Existe-t-il une alternative pour faire cela ??

mais je ne devrais utiliser que l'inerface insted de la classe abstraite.

/

Existe-t-il un problème pour spécifier un spécificateur d'accès dans l'interface?

Je veux spécifier les événements dans Interface et ceux-ci ne doivent être accédés que par la classe implémentée, je veux donc un spécificateur d'accès protégé pour cet événement.

et j'ai une certaine fonction qui peut être utiliser l'interface dans une autre classe. Dans ce cas, je peux utiliser le spécificateur d'accès public.

Était-ce utile?

La solution

Je ne sais pas de quelle langue vous parlez mais je vais vous répondre comme si c'était en C #.

Pourquoi je ne peux pas spécifier le type statique de méthodes dans l'interface. Y a-t-il une alternative pour le faire ??

C'est parce que vous ne pouvez pas écraser les méthodes statiques. Qu'est-ce que vous essayez d'atteindre?

Les membres des interfaces sont toujours publics en C #. Si vous avez besoin d'autres niveaux de protection, utilisez une classe abstraite. Quel serait le but des événements protégés si vous ne pouvez pas y accéder depuis l'interface? Cela n'a alors rien à voir avec l'interface (rappelez-vous, l'interface ne peut avoir aucun code). Si vous parlez du fait que seules les classes d'implémentation peuvent déclencher les événements, sachez qu'elles sont les seules à pouvoir les déclencher. Les événements sont construits de cette manière - seule la classe elle-même peut déclencher des événements. Vous ne pouvez pas déclencher un événement externe à la classe (sauf si vous avez une méthode sur la classe pour élever l'événement).

Autres conseils

Les interfaces

décrivent uniquement votre implémentateur au public. Le seul modificateur d’accès pour une interface est "interne". sur l'interface elle-même, ce qui en fait une interface uniquement visible par tous les membres du même assemblage ou par ceux connus à l'aide du script "InternalsVisibleTo" attribut.

Si seuls les implémentateurs devaient voir un certain événement, cet événement devrait alors se trouver dans une sorte de classe de base.

Une méthode statique est à peu près un vestige de la programmation procédurale. ils ont leur utilisation (voir par exemple méthodes d’extension) mais n’ont pas grand-chose à voir avec la POO.

Je ne comprends pas ce que vous entendez par la première question, mais votre deuxième question sur l'utilisation de protected dans des interfaces est un simple "non". Les interfaces sont appelées "interfaces". car ils spécifient l'interface " interface " (méthodes publiques) dans lesquelles vous pouvez communiquer avec cet objet.

Mon expérience de la programmation orientée objet est en relation avec Actionscript 3, mais je suis sûr que c'est relatif.

Les méthodes statiques ne peuvent pas être ignorées et elles ne sont pas utilisées lorsqu'une classe étend la classe ancêtre.

Les modificateurs d'accès ne sont pas utilisés dans l'interface car cette dernière est utilisée pour configurer les méthodes PUBLIC.

En AS3, une interface est simplement une signature de méthode sans bloc, mais incluant des types de données.

Il est important de noter que les signatures des méthodes getter / setter peuvent également être utilisées dans une interface. Celles-ci sont utiles et si vous utilisez uniquement un séparateur, vous avez créé un accès public en lecture seule à une variable privée encapsulée.

En ce qui concerne l'interface au lieu d'une classe abstraite, tout dépend de la manière dont vous souhaitez implémenter votre code. Souvent, times, interface et une classe abstraite sont utilisés ensemble pour obtenir des résultats différents en utilisant l'héritage et le polymorphisme (étend / implements).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top