- NagyZ blogja
- A hozzászóláshoz be kell jelentkezni
- 1296 megtekintés
Hozzászólások
Ezekszerint nem csak nekem van problémám ezzel :) Dehát biztos megvan erre is a logikus magyarázat, mint oly sok minden más Java agyzsugorra.
- A hozzászóláshoz be kell jelentkezni
na, miket ismersz ami szerinted me'g "agyzsugor"? :)
- A hozzászóláshoz be kell jelentkezni
Autoboxingos érdekesség jut most eszembe hirtelen; annak idején te is hozzászóltál.
Meg ott van a többszörös öröklődés és az operator overloading hiánya, ami önmagában nem agyzsugor, de amikor egyszeri java coder próbálja megindokolni ezek hiányát egy c++-ról érkezőnek... na, az az.
- A hozzászóláshoz be kell jelentkezni
en nem akartam me'g soha megmagyarazni oket.. :-)
- A hozzászóláshoz be kell jelentkezni
Miert kene megindokolni? Ket teljesen mas nyelv, csak eppen hasonlo szintakszissal. Nem kell semmit megindokolni. A C++-os tarsasag indokolhatna meg par dolgot ugyanilyen erovel.
- A hozzászóláshoz be kell jelentkezni
Nem tudom. Talán azért, mert eleve olyan a kérdéssel jönnek oda, hogy pl. "te figy, miért nincs Java-ban többszörös öröklődés?"? Én nem zavartatom magam, és megmondom kerek-perec, hogy fogalmam sincs, de vannak, akik ilyenkor megpróbálják megindokolni. Meg aztán ott vannak azok is, akiket még kérdezni sem kell: elég csak a közelükben felsóhajtani, hogy "többszörös öröklődés de jól jönne most!", aztán ők ezt mintegy személyes sértésnek véve megmagyarázzák, hogy miért is jó az, hogy nincs.
- A hozzászóláshoz be kell jelentkezni
a tobbszoros oroklodes - az esetek 95% -ban, ha Javaban "kene" - valami tervezesi hibara utal, szerintem.
interfacek, abstract classok ezert vannak..
- A hozzászóláshoz be kell jelentkezni
Ha ma csinálnák a Java-t, biztos hogy sok minden eléggé másképp lenne. A C#-ban ezekből sok mindent megpróbáltak megcsinálni, így aztán sikerült egy csomó mindent máshol elrontaniuk :)
- A hozzászóláshoz be kell jelentkezni
Nekem úgy rémlik, hogy volt valami kvázi-hivatalos magyarázat arra, hogy miért nincs többszörös öröklődés, ami úgy többé-kevésbé logikusnak is hangzott, de én sem emlékszem már rá pontosan. Az egyetemen valahogy az attribútumok fizikai layoutjáról, meg ennek optimalizálási nehézségeiről magyaráztak valamit, de utóbb belegondolva azért ezek nem megoldhatatlan problémák. Kíváncsi vagyok, hogy ezt a magyarázatot szoktad-e hallani?
---
Internet Memetikai Tanszék
- A hozzászóláshoz be kell jelentkezni
"utóbb belegondolva azért ezek nem megoldhatatlan problémák"
Főleg mivel a Java előtt is meg tudták oldani őket.
- A hozzászóláshoz be kell jelentkezni
Szerintem sokkal egyszerűbb a magyarázat: a tervezők így látták jónak. Egyszerűbb így a nyelv és kész. A C#, az Object Pascal, a Smalltalk és az Objective-C sem enged meg többszörös öröklődést.
- A hozzászóláshoz be kell jelentkezni
De a minket körülvevő világ megengedi, aztán olyankor jönnek a workaroundok.
- A hozzászóláshoz be kell jelentkezni
tudsz egy peldat, ami nem irhato at egyszeresre?
- A hozzászóláshoz be kell jelentkezni
Különféle workaroundokkal, mint interfészek, kódduplikálás :), delegáció, stb., és ezek ilyen-olyan kombinációival minden átírható... Dehát attól még, hogy esetleg hangzatos nevük van, még workaroundok maradnak.
- A hozzászóláshoz be kell jelentkezni
akkor legyszi adj egy olyan peldat, ami csak tobbszoros oroklodes mellett "helyes". kivancsi vagyok.
interfeszt workaroundnak tartani szerintem baromsag.. :)
- A hozzászóláshoz be kell jelentkezni
Itt félreértés lehet, nem azt mondtam, hogy az interfész workaround, hanem konkrétan a többszörös öröklődés "szimulálása" interfészekkel és egyebekkel az workaround. Az ok nyilvánvaló: csak az egyik szülő lehet osztály, ahonnan metódusok definícióit lehet örökölni, a többi csak interfész lehet, vagyis az azokban deklarált metódusokat mindig implementálni kell. Ha n darab többszörösen öröklött osztályban is ugyanaz az implementáció kell, akkor is, ha delegálni akarsz, akkor is. A gyerekosztály meg végül tele lesz mindenféle olyan metódusok definíciójával, amikre valódi többszörös öröklődés esetén semmi szükség nem lenne. Bár a gyakorlatban ez elég jól működik, a copy-paste-nek hála, de attól még workaround marad.
- A hozzászóláshoz be kell jelentkezni
Copy-paste? Strategy, ill. template method tervezesi mintarol hallottal-e mar?
Az interfacek meg osztalyok kozott ne arra gondolj, hogy "itt metodusok orodkolnek es kesz", hanem azt fejezed ki, hogy egyfajta API-t megvalosit-e a komponensed vagy nem (minek a helyere illesztheto be). Az, hogy az adott interface-t belul milyen modon implementalod, senkit nem erdekel, mig oroklodesnel az orokolt adattagok miatt meg van kotve a kezed, az objektumod belso adatszerkezete adott. Korul kell nezni az olyan fogalmak kozott is, hogy value class, es hasonlok. A tobbszoros oroklodes helyett sokkal esszerubb es rugalmasabb tervezesi mintak allnak rendelkezesre, sot, altalaban az objektumkompoziciot elonyben reszesitik az oroklodes helyett, pont a rugalmassag miatt.
- A hozzászóláshoz be kell jelentkezni
A minket korulvevo vilag, valamint egy determinisztikus, veges allapotu automata kozott nagy kulonbseg van. Az, hogy mint enged meg a vilag, meg hogyan kell egy ilyen automatara modellezni dolgokat, teljesen mas dolog. Szerintem modellezesi hiba lesz, ha tobbszoros oroklodesrol van szo.
- A hozzászóláshoz be kell jelentkezni