JavaRush /Blog Java /Random-FR /Expansion/rétrécissement des types de référence : différe...
Core
Niveau 35
Екатеринбург

Expansion/rétrécissement des types de référence : différentes sources - différentes interprétations

Publié dans le groupe Random-FR
Bon après-midi. Il y a une suspicion d'erreur dans les conférences JavaRush. Soit une classe Parent et une classe Enfant qui en sont héritées. Soit les lignes de code suivantes : Parent parent = new Child; Child child = (Child) parent; D'après le cours magistral du niveau 12, leçon 1 (1. Polymorphisme et substitution), paragraphe 5) (Type casting. ) la première ligne est un rétrécissement et la seconde est une expansion (dans la conférence , la vache est le parent, la baleine est l'héritière) Mais ce n'est pas vrai. Tout est exactement le contraire. Le sens de ce qui est décrit est clair : dans la première ligne, nous avons créé un objet de type Child et limité son utilisation uniquement aux méthodes décrites dans la classe Parent. Mais il s’agit d’une extension et donc une telle réduction se produit implicitement. Et dans les matériels complémentaires du niveau 10 il était dit : Votre texte à lier...
L'extension signifie passer d'un type plus spécifique à un type moins spécifique, c'est-à-dire transition des enfants aux parents. Dans notre exemple, la conversion de n'importe quel héritier (Child, Child2) en parent (Parent) est une extension, une transition vers un type plus général. Semblable au cas des types primitifs, cette transition est effectuée par la JVM elle-même si nécessaire et est invisible pour le développeur, c'est-à-dire qu'elle ne nécessite aucun effort supplémentaire, puisqu'elle réussit toujours : vous pouvez toujours accéder à un objet généré à partir d'un héritier par le type de son parent. Parent p1=nouvel Enfant(); Parent p2=nouvel Enfant2(); Dans les deux lignes, les variables de type Parent se voient attribuer une valeur d'un type différent, ce qui signifie qu'une conversion se produit. Puisqu’il s’agit d’une extension, cela se fait automatiquement et réussit toujours.
La deuxième ligne de mon exemple, au contraire, selon le même ajout. materials est un rétrécissement qui nécessite une indication explicite du type entre parenthèses. Et dans le cours, cela est interprété comme une extension, ce qui est probablement faux. Veuillez expliquer. Je ne veux pas avoir une double vision contradictoire de la conversion de caractères. Vous trouverez ci-dessous un fragment de la conférence. fragment de conférence Il y avait encore des soupçons d'erreurs dans les conférences (précédentes). Où dois-je écrire à ce sujet ? Je ne l'ai pas trouvé dans la FAQ.
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION