Hirdetés
- Posztapokalipszis és nosztalgia szegezett a képernyő elé
- Elbaltázott tankolás miatt csúszik a NASA Holdutazása
- Francia ügyészek razziáztak az X párizsi irodájában, Muskot is beidézték
- Elégedetlen lenne az NVIDIA AI gyorsítóinak tempójával az OpenAI?
- Leleplezte az új Xbox generáció érkezését az AMD vezére
- Hobby elektronika
- Kényszerűen visszavesz az AI-ból a Windows 11-ben a Microsoft?
- Kormányok / autós szimulátorok topikja
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Projektor topic
- Milyen TV-t vegyek?
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Vezetékes FEJhallgatók
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Gaming notebook topik
Ú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.
Új hozzászólás Aktív témák
- Minden a BlackBerry telefonokról és rendszerről
- Samsung Galaxy S23 Ultra - non plus ultra
- Call of Duty: Black Ops 7
- Hobby elektronika
- Alkoholista nevelde
- Samsung Galaxy Z Fold7 - ezt vártuk, de…
- Kényszerűen visszavesz az AI-ból a Windows 11-ben a Microsoft?
- Robotporszívók
- sziku69: Szólánc.
- Kormányok / autós szimulátorok topikja
- További aktív témák...
- Dell Precision 5570 FHD+ / i7-12800H 14C / 16-32G / 512G / RTX A1000 / IR FPR WS
- Dobozos ÚJ HP Victus i5-13420H, RTX 3050 (6GB), 144Hz
- Dobozos ÚJ MSI Cyborg 15 A13VF i7-13620H, RTX 4060, 144Hz,
- Dobozos új MSI Katana 17 B13VFK-269 i7-13620H, RTX 4060, 1TB SSD, FHD 144Hz
- Dobozos ÚJ Lenovo Yoga 7 2-in-1 OLED FHD+ AMD Ryzen 5 7535U 16GB /512SSD
- HIBÁTLAN iPhone 13 Pro 128GB Alphine Green -1 ÉV GARANCIA - Kártyafüggetlen, MS3024
- LG UltraFine 4K - 6K és Smart Monitorok -30%
- iPhone 14 Pro 128GB 100% (1év Garancia)
- Új és újszerű 15-16 Gamer, irodai, üzleti, készülékek nagyon kedvező alkalmi áron Garanciával!
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max/
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs


