This commit is contained in:
2026-09-12 08:56:27 +02:00
parent 426aa92d0d
commit 18306bdc8c
116 changed files with 11080 additions and 0 deletions

View File

@@ -0,0 +1,78 @@
# 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 :
```text
open
ou
final
```
Une classe abstraite est :
```text
abstract
```
`abstract`, `open` et `final` sont mutuellement exclusifs au niveau classe.
## 8.3 Receivers — V1 REQUIS — FIGÉ
```text
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 :
```text
super::super
parent::parent
```
## 8.4 Accès membre — V1 REQUIS — FIGÉ
Les membres sont accédés explicitement avec `::` :
```text
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 :
```text
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.
---