Java-ban hogy konvertáljak egy objektumot egy bővített osztályba?
Tegyük fel, hogy van egy előre definiált 'Butor' és egy általam írt 'Szekreny extends Butor' osztály.
Én kapok egy már meglévő 'Butor' objektumot, és ebből hoznék létre egy 'Szekreny' objektumot néhány további attribútummal. A forrás objektum adott, azzal kell dolgozni.
Az explicit típuskonverzió még akkor sem működik, ha a 'Szekreny' osztályhoz nem adok hozzá semmit.
Szeretném elkerülni az attribútumok egyenkénti átvitelét egy konstruktorban, ha egy mód van rá.
köszönöm, ez érthető
kicsit bosszantó, mert egy összetett objektumról van szó és a másolat csupán egyetlen plusz információt tartalmazna :(
Én így csinálnám, persze ekkor le kell másolni egyesével a tulajdonságokat:
class Butor
{
public Butor(Butor butor) {
tulajdonsag1 = butor.tulajdonsag1;
tulajdonsag2 = butor.tulajdonsag2;
//...
}
}
class Szekreny extends Butor
{
public Szekreny(Butor butor) {
super(butor);
csakSzekrenyTulajdonsag = "amit akarsz";
}
public Szekreny(Szekreny szekreny) {
super(szekreny);
csakSzekrenyTulajdonsag = szekreny.csakSzekrenyTulajdonsag;
}
}
Viszont ha van pl egy Szék osztályod is, akkor egyszerű doglod lesz, mivel a Butor medoglja a másolásokat.
köszi
Már látom, hogy rossz példát hoztam, mert tovább gondoltad olyan irányba, ami az én esetemben teljesen felesleges. A lényeg az, hogy egyetlen egy plusz tulajdonsággal bővíteném a tárolt adatok listáját minden objektum esetén. (alternatív osztályokra később sem lesz szükség, mivel ez tulajdonképp nem egy al-osztály, hanem egy továbbfejlesztett változat)
Lényegében egy plugint írok, a példámban 'Butor'-ként szereplő osztály pedig az alkalmazás része, nem módosítható. A forrásobjektumot is készen kapom meg, nem én hozom létre.
Annyit tehetek, hogy a saját osztály konstruktorába berakom a forrásobjektumot, mint paraméter.
Tudom, hogy lényegtelen, nem úgy értettem. Csak azt akartam ezzel elmondani, hogy egy olyan tulajdonsággal bővítem, amivel minden objektum rendelkezni fog, így elég egy osztály hozzá.
Amúgy már rég készen van. Nem volt nehéz, csak bíztam benne, hogy van erre valami szebb megoldás.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!