JAVA-ban mi a gyakorlati értelme hogy más legyen a referenci ája változónak, mint az osztály neve?
2018. ápr. 18. 14:25
1/10 anonim válasza:
Példának okáért, ha akarsz egy tömböt csinálni, amiben vannak kutyák, macskák, gekkók egyaránt, akkor belebotlasz abba a gondba, hogy "De a kutya, macska, és gekkó külön osztályok, nem csinálhatsz belőlük tömböt". Viszont ha csinálsz egy általános Állat tömböt, akkor abba belepakolhatod a kutyádat, macskádat, gekkódat egyaránt. Ennek annyi a hátulütője, hogy mivel a program szemében te nem kutyát, meg macskát tárolsz, hanem állatot, ezért csak az általános, az állat ősosztályához tartozó interfészt használhatod (magyarul, ha a kutya osztályodnak van egy "Ugat" metódusa, és a macskádnak egy "Nyávog" metódusa, azok nem lesznek elérhetőek, mert az általános Állat osztályon egyik sincs.
2/10 anonim válasza:
Ez kibekkelhető egyébként úgy, hogy az Állat osztályról visszacastolod az adott specifikus osztályra, de ez nem egy túlzottan preferált eljárás.
3/10 anonim válasza:
"Dog b = new Dog();"
Ilyet normális helyen ritkán látni :) A "b" egy semmit mondó név, ami elég rosszul jönne ha hivatkozni akarnál az osztálynak ennek a változatára, de ha nem kell, akkor meg nem is szoktak nevet adni.
pl.: arraylist.add(new Dog("ide jön az amit megadsz a konstruktornak");
Egy ilyennel elintézik ....
4/10 anonim válasza:
A kérdésedből ítélve (se füle se farka) nem nagyon sikerült még megértened az OOP és/vagy öröklődés alapjait.
5/10 anonim válasza:
#4 Most mondjam azt, hogy a válaszod alapján (semmi lényegi tartalma) te sem?
6/10 anonim válasza:
Itten öröklés van a Dog osztály leszármazottja az Animal osztálynak. Az általad leírt is használható, úgy is működik. A probléma akkor van, ha egy tömbbe akarod tárolni az állatokat, aztán pedig rendezni név szerint (Bundi, Cirmi, stb.). Ha a Dog []d tömben telepíted a kutyákat, Cat []c tömbben a macskákat, elég nehezen tudnád egyben kezelni az egészet, és felesleges is lenne. Ha pedig Animal[] a tömbbe adod hozzá mindkettőt, akkor simán tudod őket rendezni/karbantartani.
7/10 A kérdező kommentje:
#1-es köszi! Értem,tehát akkor mikor nem akarok vele foglalkozni hogy a gyerekek osztályok eltérőek, hanem csak az érdekel hajtsák végre a rájuk szaobtt adott nevű metódust.
2018. ápr. 18. 16:07
9/10 anonim válasza:
Mert így elég egyszer megírnod a logikát, OOP lényege hogy minimalizálja a felesleges munkát, így azzal tudsz foglalkozni aminek értelme is van. A példában linkelt kód működni fog akárhány állattal, ha külön meg akarnád adni a típusát(nem csak az ősosztályát) akkor mindegyik állathoz külön be kéne pötyögnöd hogy működjön. cat.move(), dog.move(), elephant.move(), és így tovább. Így meg elég annyi hogy először megadod hogy pontosan milyen osztályt akarsz csinálni aztán animal.move().
10/10 anonim válasza:
#9 Ez is egy nézőpont, de szerintem az igazi lényeg abban rejlik, hogy ezek az ősmetódusok override-olhatóak a származtatott osztályokban, így mindegyiknek megmarad a saját egyedi működése, noha alapvetően egy kalap alatt kezeled őket. Basically az interface lényege röviden, tömören. :D
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!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!