A két példányosítás között mi a különbség?
Maradjunk a JAVA nyelvnél mondjuk.
pl: van egy ősotszály (Allat), és a leszármazottja a Kutya osztály.
És ha mondjuk szükségem van egy kutya példányra, akkor mi a különbség a két variácó között?
1: Allat peldany = new Kutya();
2: Kutya peldany = new Kutya();
Mindkettőnél működik a program, csak nem értem a különbséget.
nem igy akartad irni?
1: Allat peldany = new Allat();
2: Kutya peldany = new Allat();
# 4/4 Időpont ma 16:32
Ez a kommented el is árulta mennyire (segítek: egyáltalán rohadtul nagyon nagyon nem) értesz a programozáshoz. :-)
Mar enis elgondolkoztam hogy elirtam:/
De én úgy tudtam hogy az ősosztályt kell előre írni, és azt lehet példányosítani egy gyerekkel.. De kipróbáltam, és nem fogadja el fordítva.
Egyébként mindegy hogy használom?
> Egyébként mindegy hogy használom?
A különbséget leírtam. Bizonyos esetekben 1. variáció a jó (pl. a többféle állatod van - Kutya, Macska -, de általánosan, Allat-ként akarod őket kezelni). Bizonyos esetekben meg a 2. variáció kell, amikor csak specifikusan egy Kutya objektummal akarsz foglalkozni (pl. amikor egy Kutya saját metódusát akarod hívni).
Ahogyan azt már előttem leírták, az első esetben Allat típusúként kezeled a létrehozott példányt, a másodikban pedig Kutya-ként.
Hogy mi a haszna? Itt jön be a képbe a polimorfizmus, mint olyan:
Ha te egy Allat példányra vagy kíváncsi, mert a feladatod elvégzéséhez az szükséges, akkor így nem lényeges, hogy milyen Allat implementációt kapsz, ugyanúgy tudsz vele dolgozni.
Hülye példa, de:
// Allat.class
public void eszik() {
˙˙˙˙System.out.println("Nyam-nyam-nyam");
}
// Valahol másutt
public void etet(Allat allat) {
˙˙˙˙allat.eszik();
}
// És megintcsak máshol
akármi.etet(new Kutya());
Az etet metódusodnak nyugodtan adhattál volna macskát, vagy gőtét is, számára lényegtelen. Nem kellett külön etet metódust csinálni a kutyához, macskához, bánomisénmihez.
Dependency injection esetén nagyon hasznos, de ezt most sajna nincs időm kifejteni. Ha érdekel, guglizd meg :)
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!