0
votes

Comment descendre un tableau en Java? (Polymorphisme)

J'ai actuellement une classe supercar qui étend une classe voiture et que vous souhaitez souscrire un tableau d'une matrice de voiture classe.

< a href = "https://i.stack.imgur.com/xfbov.png" rel = "nofollow noreferrer"> mon code : xxx

est que tout problème ou erreur dans le code?


3 commentaires

Cela compile-t-il sans erreurs?


S'il vous plaît partagez votre code au lieu d'une image


@CFF_L Je suis nouveau à ici, j'apprends toujours à la base de la publication.


3 Réponses :


0
votes

Tout d'abord: ce serait bénéfique, si vous n'avez pas inclus de capture d'écran mais collé le code directement avec la surbrillance. Par cela, nous pouvons directement fournir un code modifié qui concerne directement votre code dans la question.

L'idée générale que vous essayez de réaliser est appelée élargissement en termes de traitement d'une instance d'une sous-classe comme une instance de sa superclasse et il convient parfaitement à faire cela. L'action inverse serait appelée rétrécissement . Toutefois, en termes de votre code, vous ne pouvez pas lancer une gamme d'objets à un autre objet, vous devez entrer un index pour accéder à une voiture de votre tableau, que vous avez ensuite lancé sur votre supercar spécialisé.

Quelque chose comme ça devrait fonctionner: xxx

Bien que vous devriez penser à toutes les voitures différentes de la matrice.


3 commentaires

Donc, c'est méchant si je veux faire la Downcasting pour la partie de tableau doit en créer un par un pour accéder à la classe spécifique?


@oscar Je ne suis vraiment pas sûr de ce que vous essayez d'atteindre, car il n'était pas clair de la question initiale. Si vous voulez tout l'ensemble de voitures, vous pouvez également lancer la matrice via supercar [] superd = (supercar []) voitures;


Comment appeler supercar [] superd = (supercar []) voitures; ?



0
votes

Vous ne pouvez pas lancer des objets d'objets à un autre objet. Vous pouvez essayer de faire comme ci-dessous xxx


0 commentaires

0
votes

Si vous initialisez un tableau avec son propre type:

voiture [] voitures = nouvelle voiture [10];

Même si la voiture est une superclasse, vous ne pouvez pas descendre le tableau des voitures. Pour cette raison, ci-dessous le code lancera ClasscastException

supercar [] superd = (supercar []) voitures;

Si vous souhaitez baisser le tableau de voiture, vous devez initialiser ce tableau avec type de sous-classe:

voiture [] voitures = nouveau supercar [10];

Et vous pouvez descendre cette matrice à SuperCar.

supercar [] superd = (supercar []) voitures;


0 commentaires