Mis on abstraktsete klass?

Nagu abstraktsed klassid, on olemas ka abstraktsed meetodid. Deklareerime nii abstraktse meetodi kui abstraktse klassi abstraktse märksõnaga. Selles teemas tutvume PHP-s abstraktklassiga.

Pärandi mõiste kohaselt laiendatakse vanemklassi tuletatud klassiga. Vanemklassi meetodeid rakendavad või määratlevad tuletatud klassid. PHP võimaldab vanemate klassil olla täpsem, kasutades abstraktseid klassi- ja abstraktseid meetodeid.

Abstraktne klass sisaldab kohustuslikult ühte meetodit abstraktsena. Selles abstraktses klassis võib olla ka teisi mitteabstraktseid meetodeid.

Süntaks

Abstraktse klassi süntaks ühe meetodiga kui abstraktne.

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

Abstraktne meetod

abstract public function DemoAbstractMethod();

Kuidas töötab abstraktne klass PHP-s?

Selles artiklis õpime abstraktse klassi toimimist ja see läheb nii.

Nüüd kui me teame, et abstraktsel klassil on sunniviisiliselt üks meetod abstraktsena.

Võib olla ka mitteabstraktseid meetodeid. Abstraktsel meetodil on põhiklassis ainult deklaratsioon. See tähendab, et sellel on ainult nimed ja parameetrid, millel pole muud koodi.

Meetodi edasiseks määratlemiseks ja meetodiga töötamiseks tuleb see meetod rakendada tuletatud klassis, mis laiendab põhiklassi. Samuti pidage meeles, et seda abstraktset klassi ei saa objektide loomiseks kiirendada, vaid põhiklassist tuletatud klassi saab objektide loomiseks kiirendada.

Näited abstraktsest klassist PHP-s

Allpool on toodud mõned näited PHP abstraktsest klassist

Näide nr 1

Allpool olevas programmis õpime, mis juhtub, kui luuakse abstraktse klassi objekt.

Luuakse abstraktse klassi õpilane, mis sisaldab ühte abstraktset meetodit õpilasklassi favouriteSubject () ja kahte muud mitte abstraktset meetodit nagu setRollNo () ja getRollNO (), mis seab ja saab õpilase rolli, mis tehakse tuletatud klassi objekti loomisel (põhiklassi laiendamine).

<_?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();
?>

Väljund:

Näide 2

Seda näidet selgitatakse allpool, pärast programmi väljundit koos selle näite koodiga.

Kood

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();

Väljund:

Abstraktset klassi võib nimetada tuletatud klasside luustikuks. Selles ülaltoodud näites kuulutame abstraktse klassi Õpilase ja atribuudi nimega $ m õpilase märkide jaoks.

Näite 2 selgitus

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

Abstraktset klassi võib nimetada tuletatud klasside luustikuks. Selles näites deklareerime abstraktse klassi ja meetodid koos teiste meetoditega.

Ülaltoodud näites oleme deklareerinud abstraktsete klassi õpilaste abstraktsete meetoditega õpilase protsendi ja antud hinnete arvutamiseks.

Samuti oleme loonud meetodeid (mis ei ole abstraktsed) õpilase märgiste seadmiseks ja õpilase lemmikaine saamiseks.

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

Abstraktse klassi õpilase objektide loomiseks peame laiendama klassi õpilast ja looma sellest tuletatud klassid. Põhiklass kasutab laiendatud märksõna, et võimaldada põhiklassi laiendada. Kui klassi laiendatakse, saame nüüd kasutada põhiklassi meetodeid.

Ülaltoodud näites on Ram tuletatud klass, mis laiendab põhiklassi õpilast. See kasutab laiendatud märksõna. Nüüd oleme arvutanud protsendi () meetodi, et arvutada Rami saadud märkide protsent.

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

Veel ühe klassi kuulutamine, mis laiendab meie jaoks põhiklassi õpilast, et saada rohkem teada.

Ülaltoodud näites oleme loonud Sherry kui tuletatud klassi, mis on loodud baasklassi Õpilasest. See kasutab laiendatud märksõna. Sellel on kaks funktsiooni, millest üks kuulutati abstraktseks, põhiklassis on meetod calulatePercentage (), teine ​​on lemmikmeetod (), mis pole abstraktne.

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';
)
)

Nüüd loome põhiklassi objekti ja tuletatud klassi objekti, mis viskab vea. Sest me ei saa vahet teha abstraktseks kuulutatud klassist.

Seega saab luua ainult tuletatud klassi objekti. Kui see on tehtud, nimetame seda objekti kasutades abstraktseks ja mitte abstraktseks meetodiks, nagu allpool näha.

$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();

Järeldus

Loodan, et selles artiklis õppisite, kuidas abstraktset klassi deklareeritakse, kuidas see töötab, kuidas seda laiendatakse märksõna laiendamise abil, kuidas abstraktset meetodit deklareeritakse põhiklassis ja kuidas seda rakendatakse tuletatud klassis. Selgitatud näited aitavad teil seda kontseptsiooni hõlpsalt õppida. Loodan, et see oli piisavalt kasulik, et rohkem haarata ja harjutada.

Soovitatavad artiklid

See on juhend PHP abstraktklassi juurde. Siin räägime sellest, kuidas töötab abstraktsusklass PHP-s koos näidiskoodiga ja sobivate väljunditega. Võite lisateabe saamiseks vaadata ka järgmisi artikleid -

  1. Objekt PHP-s
  2. PHP konstandid
  3. Präänik PHP-s
  4. Mustrid PHP-s
  5. Faktoriaal PHP-s
  6. PHP võltskonstandid
  7. C ++ abstraktne klass
  8. PHP rekursiivne funktsioon
  9. Rekursiivne funktsioon Pythonis
  10. Rekursiivne funktsioon C-s
  11. Rekursiivne funktsioon JavaScriptis

Kategooria: