63 votes

Quelle est la différence entre la finale de la Classe et de la Classe?

Quelle est la différence entre la finale de la Classe et de la Classe?

final class A {

}

class B {    

}

95voto

totocaster Points 1259

Les Classes marquées avec final peut pas être modifiée.


Pourquoi devrait-on les soins à tous si la classe peut ou ne peut pas être remplacée?

Il y a deux choses à considérer:

  1. L'API de concepteur/développeur, vous pouvez avoir une classe dans votre Cadre de travail qui peuvent être victimes de violence ou d'utilisation abusive lorsque les sous-classé. final empêche la classe d'être sous-classé-mission accomplie. Vous pouvez également utiliser final pour marquer les méthodes, les propriétés et même les indices de classes non-finales. Cela aura le même effet, mais pour une partie particulière de la classe.
  2. Le marquage de la classe en tant que final indique également Swift compilateur que la méthode doit être appelée directement (statique de l'expédition), plutôt que de rechercher une fonction à partir d'une table de méthode (dynamic dispatch). Cela réduit d'appel de fonction, les frais généraux et vous donne un surcroît de performance. Vous pouvez en lire plus sur ce sur Swift Blog des Développeurs.

91voto

luckyShubhra Points 231

La finale est modificateur de classe, ce qui l'empêche d'être héritée ou remplacée. À partir de la documentation d'apple

Vous pouvez empêcher une méthode, une propriété, ou indice de remplacement par le marquer comme final. Ce faire en écrivant le dernier modificateur avant la méthode, une propriété, ou indice de l'introducteur de mot-clé (par exemple comme définitive var, final func, classe finale func, et enfin, l'indice).

Toute tentative de remplacer une dernière méthode, une propriété, ou indice dans un sous-classe est signalé comme une erreur de compilation. Des méthodes, des propriétés ou des les indices que vous ajoutez à une classe dans une extension peut également être marqué comme en finale dans l'extension de la définition.

Vous pouvez marquer toute une classe comme définitive par écrit le modificateur final avant le mot-clé class dans sa définition de classe (classe finale). Tout tentative à la sous-classe d'une classe finale est signalé comme une erreur de compilation.

22voto

Vlad Khambir Points 3215

L'utilisation finale lorsque vous savez qu'une déclaration n'a pas besoin d'être substituée. Le mot-clé final est une restriction sur une classe, une méthode ou une propriété qui indique que la déclaration ne peut pas être remplacée. Cela permet au compilateur de manière sécuritaire à éluder la distribution dynamique d'indirection.

Lire la suite:

https://developer.apple.com/swift/blog/?id=27

14voto

iamirzhan Points 679

Final signifie que personne ne peut hériter de cette classe.

10voto

William Hu Points 16

En plus d' final déclaration n'a pas besoin d'être remplacées aussi a une meilleure performance que de ne pas utiliser finalcar final désactiver la distribution dynamique lors de l'exécution, qui économisent de gestion d'exécution.

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