Disons que j'ai un objet de la classe Car, avec comme 30 variables allant de la vitesse maximale à la couleur. Je veux faire un objet MyCar (la classe MyCar étend Car) qui est fondamentalement la même chose sauf qu'il stocke plus d'informations.Étendre objet et hériter toutes les variables
Il m'est impossible de créer des objets MyCar tout de suite (puisque des milliers d'objets Car, seuls quelques-uns deviendront des objets MyCar), à moins de laisser les champs vides, mais cela ne semble pas trop professionnel. Et ne crée pas non plus un constructeur qui prend 30 arguments, ou met 30 arguments à travers des appels de méthode.
Alors, est-il possible d'hériter facilement de toutes les variables d'un objet de super-classe? PS: Mon programme ne concerne pas les voitures, mais je pensais que ce serait un exemple plus facile.
EDIT
Merci pour les réponses. Ils sont tous utiles pour mon programme, mais pas pour ce problème particulier. Les constructeurs ne semblent pas bénéfiques parce que mes voitures n'ont pas de valeurs par défaut pour leurs variables. Chaque fois qu'une voiture est faite, toutes les variables sont remplies (ce qui est nécessaire pour construire une sorte de «fiche d'information»).
Les enveloppes sont une conception intéressante, mais nécessitent encore que je copie toutes les variables dans le constructeur de la sous-classe. J'espérais qu'il y aurait un moyen de contourner cela. Les modèles nécessiteraient également que je copie toutes les variables une par une.
Dans mon programme, la sous-classe agit comme une sorte de «classe wrapper» dans un moteur de recherche. Les sous-classes sont les mêmes que les voitures normales, mais elles ont un «score de classement». Mon programme est conçu pour afficher les voitures ordinaires, et en prolongeant ceux que je peux facilement afficher les sous-classes et les ordonner par score en même temps.
Je dois quand même créer de nouveaux objets, car plusieurs recherches peuvent être effectuées sur la même liste de voitures. Donc modifier les variables dans les voitures d'origine n'était pas une option.
Peut-être qu'il existe une meilleure solution à ce problème, mais pour l'instant je suppose que je vais devoir passer l'objet superclasse dans le constructeur et copier toutes les variables là-bas.
Merci pour l'aide! PS: Je pense juste, peut-être que je pourrais jeter toutes les variables dans un HashMap. De cette façon, je pourrais y accéder en utilisant .get (varname), et je n'aurais qu'à passer une variable HashMap dans la sous-classe. L'inconvénient est que je devrais jouer beaucoup, car les vars sont un mélange de cordes, d'ints, de doubles, etc. Que pensez-vous, est-ce un style de codage acceptable?
FYI, l'équation .NET est d'utiliser les propriétés pour définir tous les paramètres facultatifs (et parfois requis - vous obtenez IllegalStateException jusqu'à ce que vous le fassiez). – Joshua