8 votes

public static vs open static vs classe publique vs classe ouverte ?

Avec l'introduction de la open dans Swift 3, les éléments suivants sont soudainement des modificateurs de portée valides pour une méthode : open static , public static , open class , public class mais quelles sont exactement leurs différences ? Je comprends que public est censé être l'équivalent de public final en Java permettant open les méthodes et les variables de la classe à être surchargées, mais alors qu'est-ce que le public class func o open static func signifie ? Sont-ils synonymes de public static func ? c'est-à-dire que les trois implémentations ne permettraient pas aux sous-classes de les remplacer ? Y a-t-il des avantages uniques à chacune des 4 permutations différentes dans des contextes spécifiques ?

29voto

XAleXOwnZX Points 159

Cette question est inutilement compliquée car vous comparez les membres du produit cartésien de deux variables ( open vs public y static vs class ), plutôt que de poser des questions sur les deux variables séparément.

Ce n'est pas une question de open static vs public static vs open class vs public class mais plutôt de open vs public y static vs class . Ce sont deux dimensions orthogonales.

open vs public

public :

Au sein du module, le public le spécificateur d'accès permet l'accès y en passant outre.

Depuis l'extérieur du module, le public Le spécificateur d'accès permet l'accès, mais ne autoriser les surcharges/sous-classes.

open :

Au sein du module, le open le spécificateur d'accès permet l'accès y en passant outre.

Depuis l'extérieur du module, le open Le spécificateur d'accès permet l'accès, y permet les surcharges/sous-classes.

static vs class

static :

A static Un membre (méthode ou propriété) est celui qui est lié à la portée spécifique ( class / struct / enum ) dans lequel il est défini. On l'appelle ainsi parce que l'accès à ces membres est toujours distribué de manière statique. C'est l'équivalent de la méthode Java static . Objective C n'a pas d'équivalent à cela.

class :

A class Un membre est celui qui est lié à une classe ou à ses sous-classes. class peuvent être remplacés par des sous-classes. Pour cette raison, ils sont distribués de manière dynamique dans le cas général, bien que les accès à class peuvent être dévirtualisés par l'optimiseur dans certains cas. Java n'a pas d'équivalent à cela. C'est l'équivalent de la classe d'Objective C ( + ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X