You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/09-classes/02-class-inheritance/article.md
-16Lines changed: 0 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -316,21 +316,13 @@ new Rabbit(); // animal
316
316
*/!*
317
317
```
318
318
319
-
<<<<<<< HEAD
320
319
Ici, la classe `Rabbit` étend `Animal` et remplace le champ `name` par sa propre valeur.
321
-
=======
322
-
Here, class `Rabbit` extends `Animal` and overrides the `name` field with its own value.
323
-
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
324
320
325
321
Il n'y a pas de constructeur propre dans `Rabbit`, donc le constructeur `Animal` est appelé.
326
322
327
323
Ce qui est intéressant, c'est que dans les deux cas : `new Animal()` et `new Rabbit()`, l' `alert` dans la ligne `(*)` montre `animal`.
328
324
329
-
<<<<<<< HEAD
330
325
**En d'autres termes, le constructeur parent utilise toujours sa propre valeur de champ, pas celle remplacée.**
331
-
=======
332
-
**In other words, the parent constructor always uses its own field value, not the overridden one.**
333
-
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
334
326
335
327
Qu'est-ce qui est étrange à ce sujet ?
336
328
@@ -367,19 +359,11 @@ Et c'est ce à quoi nous nous attendons naturellement. Lorsque le constructeur p
367
359
368
360
... Mais ce n'est pas le cas pour les champs de classe. Comme dit, le constructeur parent utilise toujours le champ parent.
369
361
370
-
<<<<<<< HEAD
371
362
Pourquoi y a-t-il une différence ?
372
363
373
364
Eh bien, la raison est dans l'ordre d'initialisation du champ. Le champ de classe est initialisé :
374
365
- Avant le constructeur de la classe de base (qui n'étend rien),
375
366
- Immédiatement après `super()` pour la classe dérivée.
376
-
=======
377
-
Why is there a difference?
378
-
379
-
Well, the reason is the field initialization order. The class field is initialized:
380
-
- Before constructor for the base class (that doesn't extend anything),
381
-
- Immediately after `super()` for the derived class.
382
-
>>>>>>> 71da17e5960f1c76aad0d04d21f10bc65318d3f6
383
367
384
368
Dans notre cas, `Rabbit` est la classe dérivée. Il n'y a pas de `constructor()` dedans. Comme dit précédemment, c'est la même chose que s'il y avait un constructeur vide avec seulement `super(...args)`.
0 commit comments