Mi az absztrakt osztály?

Az absztrakt osztályhoz hasonlóan vannak absztrakt módszerek is. Megállapítottuk mind az absztrakt módszert, mind az absztrakt osztályt az absztrakt kulcsszóval. Ebben a témában a PHP absztrakt osztályáról fogunk tanulni.

Az öröklés fogalma szerint a szülőosztályt kiterjesztették a származtatott osztályra. A szülőosztály módszereit a származtatott osztályok valósítják meg vagy határozzák meg. A PHP lehetővé teszi a szülőosztály pontosabbá tételét az absztrakt osztály és az elvont módszerek felhasználásával.

Az absztrakt osztály kötelezően tartalmaz egy módszert absztraktként. Ez az absztrakt osztály más nem absztrakt módszerekkel is rendelkezhet.

Szintaxis

Az absztrakt osztály szintaxisa, egy módszerrel, mint absztrakt.

abstract class DemoAbstractClass() (
abstract public function DemoAbstractMethod();
)

Absztrakt módszer

abstract public function DemoAbstractMethod();

Hogyan működik az absztrakt osztály a PHP-ben?

Ebben a cikkben megismerjük az elvont osztály működését, és így jár.

Most, amint tudjuk, hogy egy absztrakt osztály kötelezően egy módszerrel rendelkezik, mint absztrakt.

Lehetnek nem absztrakt módszerek is. Az absztrakt módszernek csak az alaposztályban kell megadnia a deklarációt. Ez azt jelenti, hogy csak nevekkel és paraméterekkel rendelkezik, más kód nélkül.

A módszer további meghatározásához és a módszerrel való együttműködéshez ezt a módszert a származtatott osztályban kell megvalósítani, amely kiterjeszti az alaposztályt. Ne feledje azt sem, hogy ezt az absztrakt osztályt nem lehet objektumok létrehozására inicializálni, hanem az alap osztályból származó osztályt az objektumok létrehozására inicializálhatják.

Példák absztrakt osztályra a PHP-ben

Itt található néhány példa a PHP absztrakt osztályára

1. példa

Az alábbi programban megismerjük, mi történik, ha egy elvont osztály objektumát hozzuk létre.

Az abszolút osztályú hallgató egy absztrakt módszerrel, amely a hallgatói osztály favouriteSubject () módszerét tartalmazza, és két másik, nem absztrakt módszerrel, mint például a setRollNo () és a getRollNO (), amely meghatározza és megkapja a hallgató szerepét, amelyet a származtatott osztály objektumának létrehozásával hajtanak végre. (az alap osztály kibővítése).

<_?php
abstract class Student (
protected $m;
public function setRollNo($rollno) (
return $this->m = $rollno;
)
public function getRollNo() (
return $this->m;
)
abstract public function favouriteSubject()
)
class Radha extends Student (
public function favouriteSubject() (
return "English";
)
)
$obj = new Student; //this statement throws error as we cannot create object of class Student as it is defined as abstract
$obj = new Radha; //this statement does not throws error and executes correctly
$obj->favouriteSubject();
?>

Kimenet :

2. példa

Ezt a példát az alábbiakban lépésről lépésre magyarázzuk, miután a program kiadta a példában szereplő kódot.

Kód

abstract class Student(
protected $m;
abstract public function calulatePercentage();
public function setMarks($marks) (
return $this->m = $marks;
)
public function favoriteSubject() (
return 'Favorite subject is English';
)
)
class Ram extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Ram is '.$percentage. '%' .'
';
)
)
class Sherry extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Sherry is '.$percentage. '%' .'
';
)
public function favoriteSubject() (
return 'Favorite subject is Maths';
)
)
$ram = new Ram();
$ram->setMarks(92);
echo $ram->calulatePercentage();
echo $ram->favoriteSubject();
echo ' ';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calulatePercentage();
echo $sherry->favoriteSubject();
abstract class Student(
protected $m;
abstract public function calulatePercentage();
public function setMarks($marks) (
return $this->m = $marks;
)
public function favoriteSubject() (
return 'Favorite subject is English';
)
)
class Ram extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Ram is '.$percentage. '%' .'
';
)
)
class Sherry extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Sherry is '.$percentage. '%' .'
';
)
public function favoriteSubject() (
return 'Favorite subject is Maths';
)
)
$ram = new Ram();
$ram->setMarks(92);
echo $ram->calulatePercentage();
echo $ram->favoriteSubject();
echo ' ';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calulatePercentage();
echo $sherry->favoriteSubject();

Kimenet :

Egy elvont osztályt úgy lehet nevezni, mint a származtatott osztályok vázát. Ebben a fenti példában deklaráljuk az absztrakt osztályú diákot és egy $ m nevű tulajdonságot a tanuló jeleire.

A 2. példa magyarázata

abstract class Student (
abstract public function calulatePercentage();
)

Egy elvont osztályt úgy lehet nevezni, mint a származtatott osztályok vázát. Ebben a példában az absztrakt osztályt és módszereket deklaráljuk, más módszerekkel együtt.

A fenti példában absztrakt osztályú hallgatókat deklaráltunk absztrakt módszerekkel, amelyek segítségével kiszámíthatjuk a hallgatók százalékos arányát a megadott pontokkal együtt.

Emellett olyan módszereket is készítettünk (amelyek nem elvonták) a hallgató jeleinek meghatározásához és a hallgató kedvenc tárgyának megszerzéséhez.

abstract class Student(
abstract public function calulatePercentage();
public function setMarks($marks) (
return $this->m = $marks;
)
public function favoriteSubject() (
return 'Favorite subject is English';
)
)

Az absztrakt osztályú diák objektumainak létrehozásához ki kell terjesztenünk az osztály diákját, és abból származtatott osztályokat kell létrehoznunk. Az alap osztály kiterjeszti a kulcsszót az alap osztály kibővítéséhez. Miután az osztály kibővült, használhatjuk az alap osztály módszereit.

A fenti példában a Ram az a származtatott osztály, amely kiterjeszti az alaposztályú hallgatót. A kiterjesztett kulcsszót használja. Most kiszámoltuk a százalékos () módszert a Ram által elért pontok százalékos számításához.

class Ram extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Ram is '.$percentage. '%' .'
';
)
)

Még egy osztály bejelentése, amely kibővíti az alapelemet, hogy többet tudjon meg.

A fenti példában Sherry-t hoztunk létre az alapszintű Student-ból létrehozott származtatott osztályként. Ez a kiterjesztett kulcsszót használja. Két funkciója van, az egyiket elvontnak nyilvánították, a calulatePercentage () módszer az alaposztályban, a másik a favoriteSubject () módszer, amely nem elvont.

class Sherry extends Student(
public function calulatePercentage()(
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Sherry is '.$percentage. '%' .'
';
)
public function favoriteSubject() (
return 'Favorite subject is Maths';
)
)

Most létrehozzuk az alap osztály objektumát és a származtatott osztály objektumát, amely hibát okoz. Mivel az absztraktnak nyilvánított osztályt nem bocsáthatjuk rendelkezésre.

Így csak a származtatott osztály objektuma hozható létre. Ha ez megtörtént, ezt az objektumot az elvont módszernek nevezzük, nem pedig az elvont módszernek, az alábbiak szerint.

$ram = new Ram();
$ram->setMarks(92);
echo $ram->calculatePercentage();
echo $ram->favoriteSubject();
echo ' ';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calculatePercentage();
echo $sherry->favoriteSubject();
$ram = new Ram();
$ram->setMarks(92);
echo $ram->calculatePercentage();
echo $ram->favoriteSubject();
echo ' ';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calculatePercentage();
echo $sherry->favoriteSubject();

Következtetés

Remélem, ebben a cikkben megismerkedett arról, hogyan deklarálják az absztrakt osztályt, hogyan működik, hogyan kell kibővíteni az extens kulcsszó használatával, hogyan deklarálják az absztrakt módszert az alaposztályban, és hogyan alkalmazzák azt a származtatott osztályban. A magyarázott példák segítenek a koncepció könnyű megismerésében. Remélem, hogy elkészült-e ahhoz, hogy elég hasznos legyen több megértéséhez és gyakorlásához.

Ajánlott cikkek

Ez a PHP absztrakt osztályának útmutatója. Itt tárgyaljuk, hogyan működik az absztrakt osztály a PHP-ben a minta kóddal és a megfelelő kimenetekkel. Lehet, hogy megnézi a következő cikkeket is, ha többet szeretne megtudni -

  1. Objektum a PHP-ben
  2. PHP állandók
  3. Cookie a PHP-ben
  4. Minták a PHP-ben
  5. Faktorialis a PHP-ben
  6. PHP mágikus állandók
  7. C ++ absztrakt osztály
  8. PHP rekurzív funkció
  9. Rekurzív funkció a Pythonban
  10. Rekurzív függvény C-ben
  11. Rekurzív funkció a JavaScript-ben

Kategória: