Kezdőoldal » Számítástechnika » Programozás » JAVA-ban mi a gyakorlati...

JAVA-ban mi a gyakorlati értelme hogy más legyen a referenci ája változónak, mint az osztály neve?

Figyelt kérdés

[link]

1. példa

Szóval miért nem jobb,hogy: ?

Dog b = new Dog();


2018. ápr. 18. 14:25
 1/10 anonim ***** válasza:
88%
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.
2018. ápr. 18. 14:33
Hasznos számodra ez a válasz?
 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.
2018. ápr. 18. 14:34
Hasznos számodra ez a válasz?
 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 ....

2018. ápr. 18. 14:39
Hasznos számodra ez a válasz?
 4/10 anonim ***** válasza:
13%
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.
2018. ápr. 18. 14:53
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:
#4 Most mondjam azt, hogy a válaszod alapján (semmi lényegi tartalma) te sem?
2018. ápr. 18. 15:09
Hasznos számodra ez a válasz?
 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.
2018. ápr. 18. 15:11
Hasznos számodra ez a válasz?
 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
 8/10 anonim ***** válasza:
0%

#7: Nem.

Olvasgass még.

2018. ápr. 18. 17:08
Hasznos számodra ez a válasz?
 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().
2018. ápr. 18. 18:32
Hasznos számodra ez a válasz?
 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
2018. ápr. 18. 23:11
Hasznos számodra ez a válasz?

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!