Jól értem az absztrakt osztály lényegét?
Nem tudom, jól vettem -e ki mikor olvastam róluk, hogy mikor érdemes használni.
Na például:
Istent játszunk egy játékban, ahol bolygókat teremtünk.
A bolygókat példányosítjuk a bolygó osztályból:
saturn = new planet(size,weight);
viszont a bolygó osztály öröklődik az universum osztályból (tehát használja az univerzum törvényszerűségeit, az universum változóit,metódusait), viszont arra nincs szükség , hogy a user példányosítsa az univerzumot.
tehát :
abstract class universum{
}
class planet extends universum {
function __construct(size,weight){
}
}
Ha ragaszkodunk a terminológiához, akkor nem igazán helyes a kijelentésed. Ha absztrakció áll fenn, akkor tudunk olyant, mondani, hogy "az A az egy B" az elég furán hangzik, hogy "az égitest az egy univerzum".
A csillagászati példánál maradva: az absztrakt osztály legyen az, hogy Űrobjektum. Ennek legyen két gyermek osztálya: Űrköd és Égitest. ("Az Űrköd az egy Égitest"). Az Égitest szintén legyen absztrakt és legyen leszármazott osztályai: Csillag, Bolygó, Hold. ("A Csillag egy Égitest")
Az Égitesteknek van mondjuk súlya és mérete. A Csillagoknak ezenkívül van még fényereje mondjuk, ami megkülönbözteti őket a Bolygóktól és a Holdaktól.
Kis javítás: "A csillagászati példánál maradva: az absztrakt osztály legyen az, hogy Űrobjektum. Ennek legyen két gyermek osztálya: Űrköd és Égitest. ("Az Űrköd az egy Égitest")."
Itt az Űrköd az egy Űrobjektum akart lenni szerintem, nem pedig égitest. :)
Kicsit pontatlan a példád, de nagyjából jól látod kérdező. Mondok egy talán érthetőbbet. Programozók úgyis a falra másznak már tőle, de szinte biztos, hogy tanulmányaid folyamán találkozni fogsz az autós hasonlatokkal.
Tehát képzeld el, hogy egy olyan programot kell készítened, amely autókkal dolgozik, azonban fontos az autó fajtája (teherautó, személyautó, sportkocsi, stb). Ha a fajtája fontos, akkor egyértelmű, hogy egy "auto" osztály példányosításának nincs értelme, hiszen minden objektum esetén tudnunk kell, hogy az milyen fajta autó. Ezért az "auto" osztály lehet absztrakt, amely alapvető tulajdonságokat ad a leszármazottainak (pl. maximum_speed, number_of_wheels, stb), illetve alapvető metódusokat hagy a származtatott osztályokra (Moving(), Breaking() stb).
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!