Kezdőoldal » Számítástechnika » Programozás » Java-ban hogy konvertáljak...

Java-ban hogy konvertáljak egy objektumot egy bővített osztályba?

Figyelt kérdés

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á.



2017. jún. 10. 15:31
 1/7 anonim ***** válasza:
Mivel egy bútor nem szekrény, ezért nincs ilyesmire lehetőség.
2017. jún. 10. 15:39
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:

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 :(

2017. jún. 10. 15:54
 3/7 anonim ***** válasza:

É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.

2017. jún. 10. 17:05
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:

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.

2017. jún. 10. 17:55
 5/7 anonim ***** válasza:
Teljesen mindegy, hogy egy, nyolcvan, vagy nulla plusz tulajdonsággal akarod felruházni, származtatott osztályra csak úgy nem tudsz átcastolni, létre kell hoznod az eredeti objektum alapján egy újat. Ehhez az eredeti osztályt nem muszáj módosítanod, csak a származtatott osztálynak kell egy konstruktort létrehoznod, ami az ősosztály egy eleme alapján létrehoz egy új objektumot, és abbana kosntruktorban pontosan megadhatod, milyen tulajdonságokat akarsz átültetni, és mivel kívánod kiegészíteni.
2017. jún. 10. 18:17
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:

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.

2017. jún. 10. 18:38
 7/7 A kérdező kommentje:
köszi mindenkinek
2017. jún. 10. 18:39

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!