dimanche 19 avril 2015

Scala sealed

En Java, le mot-clé final peut être utilisé lors de la déclaration d’un attribut, d’une méthode, ou d’une classe. Les trois cas ont des significations différentes, mais une idée commune : empêcher que quelque chose soit modifié.

Une classe final est une classe qui ne peut pas avoir de filles. Une classe final ne peut pas être étendue : le mécanisme d'héritage est strictement bloqué. Aucune autre possibilité ne peut nous permettre d'hériter d'une classe déclarée final. Un exemple d'une classe Employee qui peut hériter de la classe Person et qui génère une erreur lorsque la classe Person est déclarée final :



Voyons ce que nous propose Scala ...

Scala sealed

Scala nous offre un peu plus de souplesse avec le mot clé sealed. La documentation Scala nous donne une idée sur son utilisation :

« A sealed class may not be directly inherited, except if the inheriting template is defined in the same source file as the inherited class. However, subclasses of a sealed class can inherited anywhere »

sealed peut être utilisé à la fois sur une classe et sur un trait et annonce au compilateur que les classes filles sont toutes dans le même fichier. Le mécanise d'héritage n'est donc pas bloqué. On n'exige simplement que les classe filles soient déclarées dans le même fichier. Un exemple pour illustrer mes propos :


La classe Employee peut, en effet, hériter de la classe Person déclarée sealed, lorsque les deux classes sont dans le même fichier. Une erreur est générée lorsqu'une classe d’un autre fichier tente d’hériter de la classe Person …(exemple de la classe Employee déclarée cette fois-ci dans un fichier autre que le fichier de la classe Person) ....

1 commentaire:

  1. Mystino Casino | 100% Up To ¥1200 + 100 Free Spins
    Mystino is an online ミスティーノ casino 카지노사이트 that gives you the chance to win starvegad up to x1200 in free spins. Use the sign-up code MONDINO on the website.

    RépondreSupprimer