1.7 KiB
8. Classes et Object
8.1 Héritage de base — V1 REQUIS — FIGÉ
Toutes les classes héritent implicitement de Object, sauf Object lui-même.
Les primitives, structs, enums, tuples et unions n'héritent pas artificiellement de Object.
8.2 Héritage de classes — V1 REQUIS — FIGÉ
Héritage de classe unique uniquement.
Une classe concrète doit être explicitement :
open
ou
final
Une classe abstraite est :
abstract
abstract, open et final sont mutuellement exclusifs au niveau classe.
8.3 Receivers — V1 REQUIS — FIGÉ
this instance courante
super instance de la classe parente immédiate
cls classe courante dans une clsmethod
parent classe parente immédiate dans une clsmethod
Pas de :
super::super
parent::parent
8.4 Accès membre — V1 REQUIS — FIGÉ
Les membres sont accédés explicitement avec :: :
this::field
token::kind()
Type::member
super::method()
. qualifie les namespaces/modules/types ; :: accède à un symbole contenu.
Ils relèvent de la grammaire et ne sont pas surchargeables.
8.5 Identité d'instance — V1 REQUIS — FIGÉ
Object fournit une opération intrinsèque non overridable :
Object::sameInstance(Object other) -> bool
Elle teste l'identité d'instance, c'est-à-dire si deux références désignent exactement le même objet.
Elle n'est pas équivalente à ==.
Exemple : deux objets différents peuvent être logiquement égaux mais ne pas être la même instance.
Object n'implémente pas automatiquement OpEqual ni OpPartialEqual.
Les classes ne reçoivent donc aucune égalité de valeur automatique.