- AMD K6-III, és minden ami RETRO - Oldschool tuning
- ASRock lapok általában
- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- TCL LCD és LED TV-k
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Projektor topic
- Gaming notebook topik
- HiFi műszaki szemmel - sztereó hangrendszerek
- Kormányok / autós szimulátorok topikja
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
"Az absztrakt osztály lényege, hogy ez egy osztály, aminek néhány függvénye csak deklarálva van, de nincsenek definiálva (abstract függvények). Ez azt jelenti, hogy az osztály megmondja, hogy milyen pontosan függvényekre van szükség a működéséhez, de ezeket a függvényeket a leszármazottak kötelesek implementálni."
Ezt azért javítanám, mert ez így nem teljesen igaz.
Amit Te írsz, vagyis az, hogy egy osztály nem tartalmaz definíciókat, hanem csupán tartalmazza azon metódusok deklarációját, amelyeknek definícióját majd az azt megvalósító osztályoknak tartalmaznia kell, az inkább az interface-re vonatkozik: [link].
Az absztrakt osztály igenis tartalmazhat metódusdefiníciókat, mivel egy absztrakt osztálynak nem feltétlenül absztrakt az összes metódusa - lásd ezt a példát php.net-ről. Lehetnek tehát olyan osztályok, amelyek megvalósítják az absztrakt osztályt, és az ősosztályban eleve definiált függvényt fel is tudják használni, anélkül, hogy ez explicite felül lett volna bírálva - DE akár az absztrakt osztályban eredetileg is definiált metódust felül is írhatja a leszármazott osztály egy azonos nevű és visszatérési értékű metódussal.Írtam pár rövid példát a szemléltetésre:
abstract class AbstractClassExample{
public abstract function cannotBeDefinedInAbstract(){
echo 'This is an abstract function in abstract class - gives an ERROR, it won\'t be echoed!';
}
}Ez nyilvánvalóan rossz, mert abstract függvénynek nem lehet függvénytörzse, hibát is kapunk rá:
"Fatal error: Abstract function AbstractClassExample::cannotBeDefinedInAbstract() cannot contain body in D:\Honlap\www\proba\index_2.php on line 6"
Ha az adott sort lecseréljük így:
public abstract function cannotBeDefinedInAbstract();
akkor már nem kapunk hibát.A többi esettel kiegészítve itt egy hosszabb példa:
<?php
abstract class AbstractClassExample{
public abstract function cannotBeDefinedInAbstract();
public function itsAlreadyImplementedInAbstractButCanBeOverridden(){
echo 'This is derived from the abstract class!';
}
}
class ExtendsAbstract extends AbstractClassExample{
public function cannotBeDefinedInAbstract() {
echo 'This is the implemented function in derived class!';
}
public function anotherFunction(){
echo 'This is just anonther example function.';
}
}
$extendedClass = new ExtendsAbstract();
$extendedClass->cannotBeDefinedInAbstract();
echo '<br />';
$extendedClass->itsAlreadyImplementedInAbstractButCanBeOverridden();
echo '<br />';
$extendedClass->anotherFunction();
echo '<br />';
?>Ennek kimenete a következő:
This is the implemented function in derived class!
This is derived from the abstract class!
This is just anonther example function.Az itsAlreadyImplementedInAbstractButCanBeOverridden() függvény tehát egy absztrakt osztályban lett megvalósítva, a leszármazott osztály mégis eléri, és megfelelően meg is valósítja az ott szereplő kiírást.
Ez azonban felülbírálható:
class ExtendsAbstract extends AbstractClassExample{
public function cannotBeDefinedInAbstract() {
echo 'This is the implemented function in derived class!';
}
public function itsAlreadyImplementedInAbstractButCanBeOverridden() {
parent::itsAlreadyImplementedInAbstractButCanBeOverridden();
echo '<br />This comes from the derived class.';
}
public function anotherFunction(){
echo 'This is just anonther example function.';
}
}Ebben az esetben az ExtendsAbstract függvényben is megvalósítjuk az említett itsAlreadyImplementedInAbstractButCanBeOverridden() függvényt, így az felül lesz bírálva, a parent::itsAlreadyImplementedInAbstractButCanBeOverridden(); sorral viszont továbbra is érvényesül a szülőben implementált függvény összes feladata, így a kimenet a következőre módosul:
This is the implemented function in derived class!
This is derived from the abstract class!
This comes from the derived class.
This is just anonther example function. -
LW
őstag
Köszönöm. Kerestem pár példakódot úgy vélem értem a singleton osztályokat. Estére rendbe rakok mindent.
Ha az osztály példányosítása után szükségem van a singleton osztályra egy másik programblokkban, akkor az első példány referenciáját használom?
Egyáltalán nem sértő. Tisztában vagyok vele, ezért is kérdezek tőled/tőletek.
Nem tanítottak nekem php programozást, de más (egyébként objektum orientált) nyelvet is csak futólag. Ha minden igaz, öt nap múlva megkezdődnek egyetemista éveim.
Új hozzászólás Aktív témák
- The Division 2 (PC, XO, PS4)
- Elektromos cigaretta 🔞
- alza vélemények - tapasztalatok
- Kerékpárosok, bringások ide!
- Belemásznak a reddites beszélgetésekbe az AI-alapú hirdetések
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Gurulunk, WAZE?!
- Külföldi rendelések: boltok, fizetés, postázás
- Napelem
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- További aktív témák...
- IPhone 16 Plus 128GB One függő 2025.12.17. Apple jótállás
- IPhone 12 64GB gyári független szép új akku!!
- IPhone 12 128GB gyári független gyári 99%-os akku
- Asus A15 FA506IU 15.6" FHD IPS Ryzen 7 4800H GTX 1660Ti 16GB 512GB magyar vbill gar
- i5-13600KF, RX 9070, DDR5 32GB, 1 TB M.2, Fractal North TG és sok garancia
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- Napi 700 ft tól elvihető RÉSZLETRE BANKMENTES HP 840 G11 Ultra 5
- Apple iPhone 12 Pro 128GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! MSI B450 R5 5500 16GB DDR4 512GB SSD RTX 2070 8GB GDDR6 Rampage Shiva Zalman 500W
- Bomba ár! Fujitsu LifeBook U757 - i3-7GEN I 16GB I 256SSD I 15,6" FHD I HDMI I Cam I W11 I Garancia!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged