Шта је апстрактна класа?

Као и апстрактна класа, постоје и апстрактне методе. Изјављујемо и апстрактну методу и апстрактну класу са апстрактном кључном речју. У овој теми ћемо сазнати више о настави сажетака на ПХП-у.

Према концепту наслеђивања, матична класа се проширује изведеном класом. Методе у родитељској класи се проводе или дефинирају изведеним класама. ПХП чини начин да родитељска класа буде специфичнија, коришћењем апстрактних класа и апстрактних метода.

Апстрактна класа обавезно садржи једну методу као апстрактну. Такође, ова апстрактна класа такође може да има и друге не-апстрактне методе.

Синтакса

Синтакса апстрактне класе једном методом као апстрактном.

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

Апстрактни метод

abstract public function DemoAbstractMethod();

Како апстрактна класа функционише у ПХП-у?

У овом чланку ћемо научити рад апстрактне класе и то иде овако.

Сада када знамо да апстрактна класа обавезно има једну методу као апстрактну.

Постоје и не-апстрактне методе. Апстрактна метода има само декларацију у основној класи. Значи да има само имена и параметре без другог кода.

Да би се метода даље дефинисала и радила са методом, ова метода мора бити имплементирана у изведену класу која проширује основну класу. Такође, запамтите да се ова апстрактна класа не може инстанцирати за стварање објеката, али класа изведена из основне класе може се инстанцирати за креирање објеката.

Примери апстрактне наставе у ПХП-у

Ево неколико примера апстрактне класе у ПХП-у који је дат ниже

Пример # 1

У доњем програму сазнајемо шта се дешава када се створи објект апстрактне класе.

Апстрактни разред Студент је креиран тако да садржи једну апстрактну методу фавоуритеСубјецт () методу Студент Цласс и две друге не апстрактне методе попут сетРоллНо () и гетРоллНО () која поставља и добија улогу ученика, што се врши креирањем објекта изведене класе (проширивање основне класе).

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

Излаз:

Пример бр. 2

Овај пример је објашњен корак по корак после, након што се програм испише заједно са кодом из овог примера.

Код

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

Излаз:

Апстрактна класа се може назвати костуром изведених класа. У овом горњем примјеру изјављујемо апстрактну класу Студент и својство под називом $ м за оцјене ученика.

Објашњење примера бр. 2

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

Апстрактна класа се може назвати костуром изведених класа. У овом примјеру изјављујемо апстрактну класу и методе заједно са другим методама.

У горњем примјеру, декларирали смо апстрактне студенте са апстрактним методама за израчунавање постотка ученика, заједно са датим оцјенама.

Такође смо направили методе (које нису апстрактне) да поставимо оцјене ученика и добијемо омиљени предмет ученика.

abstract class Student(
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->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();

Закључак

У овом чланку, надам се да сте сазнали о томе како је декларирана апстрактна класа, како она функционише, како се проширује помоћу кључне речи ектендс, како је апстрактна метода декларирана у основној класи и како се имплементира у изведену класу. Објашњени примери помоћи ће вам да лако научите концепт. Надам се да је припремљен да буде довољно користан да схвати и вежба више.

Препоручени чланци

Ово је водич за апстрактну класу на ПХП-у. Овдје смо расправљали о томе како функционише Апстрактна класа у ПХП-у са узорком кода и одговарајућим излазима. Можда ћете такође погледати следеће чланке да бисте сазнали више -

  1. Објект у ПХП-у
  2. ПХП Цонстаннтс
  3. Цоокие у ПХП-у
  4. Обрасци у ПХП-у
  5. Факторориал у ПХП-у
  6. ПХП магичне константе
  7. Сажетак класе Ц ++
  8. ПХП рекурзивна функција
  9. Рекурзивна функција у Питхону
  10. Рекурзивна функција у Ц
  11. Рекурзивна функција у ЈаваСцрипт-у

Категорија: