Vad är en abstrakt klass?

Liksom abstrakt klass finns det abstrakta metoder också. Vi förklarar både den abstrakta metoden och den abstrakta klassen med det abstrakta nyckelordet. I det här ämnet kommer vi att lära oss om abstrakt klass i PHP.

Enligt arvskonceptet utvidgas moderklassen med den härledda klassen. Metoderna i moderklassen implementeras eller definieras av de härledda klasserna. PHP gör ett sätt för förälderklassen att vara mer specifik genom att använda abstrakt klass och abstrakta metoder.

Den abstrakta klassen innehåller obligatoriskt en metod som abstrakt. Denna abstrakta klass kan också ha andra icke-abstrakta metoder.

Syntax

Syntax av abstrakt klass med en metod som abstrakt.

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

Abstrakt metod

abstract public function DemoAbstractMethod();

Hur fungerar Abstract Class i PHP?

I den här artikeln kommer vi att lära oss hur abstrakt klass fungerar och det går så här.

Som vi vet att en abstrakt klass obligatoriskt har en metod som abstrakt.

Det kan finnas icke-abstrakta metoder också. Den abstrakta metoden har endast deklarationen i basklassen. Vilket innebär att det bara har namn och parametrar utan någon annan kod.

För att ytterligare definiera metoden och att arbeta med metoden måste denna metod implementeras i den härledda klassen som utökar basklassen. Kom också ihåg att denna abstrakta klass inte kan instanseras för att skapa objekt, men klassen härledd från basklassen kan instanseras för att skapa objekt.

Exempel på Abstract Class i PHP

Här är några exempel på abstrakt klass i PHP nedan

Exempel 1

I programmet nedan lär vi oss vad som händer när ett objekt av abstrakt klass skapas.

Abstrakt klass Student skapas som innehåller en abstrakt metod favouriteSubject () -metoden i Student Class och två andra inte abstrakta metoder som setRollNo () och getRollNO () som sätter och får studentens roll, vilket görs genom att skapa objektet för den härledda klassen (utvidga basklassen).

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

Utgång:

Exempel 2

Detta exempel förklaras steg för steg nedan, efter programutmatningen tillsammans med koden från detta exempel.

Koda

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

Utgång:

En abstrakt klass kan betecknas som ett skelett för härledda klasser. I det här exemplet ovan förklarar vi den abstrakta klassen Student och en egenskap som kallas $ m för betyg för eleven.

Förklaring av exempel 2

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

En abstrakt klass kan betecknas som ett skelett för härledda klasser. I det här exemplet förklarar vi abstrakt klass och metoder tillsammans med andra metoder.

I exemplet ovan har vi förklarat abstrakt klassstudenter med abstrakta metoder för att beräkna procentandelen av studenten, tillsammans med givna betyg.

Vi har också skapat metoder (som inte är abstrakta) för att ställa in studenternas betyg och för att få studentens favoritämne.

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

För att skapa objekt av abstrakt klass Student måste vi utöka klassen Student och skapa härledda klasser ur den. Basklassen använder utökade nyckelord för att låta basklassen utvidgas. När klassen har utökats kan vi nu använda basklassmetoderna.

I exemplet ovan är Ram den härledda klassen som utvidgar basklassen Student. Den använder sökordet förlängningar. Nu har vi beräknat procentsats () -metoden för att beräkna procentandelen av de poäng som Ram erhållit.

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

Att förklara ytterligare en klass som utvidgar basklassen Student för att vi ska lära oss mer.

I exemplet ovan har vi skapat Sherry som den härledda klassen skapad från basklassen Student. Detta använder sökordet förlängningar. Den har två funktioner, en som förklarades som abstrakt, metoden calulatePercentage () i basklassen, den andra är metoden favoriteSubject () som inte är abstrakt.

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

Nu skapar vi objektet för basklassen och objektet för den härledda klassen, som kastar ett fel. Eftersom vi inte kan instansera klassen som förklaras som abstrakt.

Således kan endast objektet för den härledda klassen skapas. När detta är gjort, med hjälp av detta objekt, kommer vi att kalla den abstrakta metoden och inte abstrakt metod både som ses nedan.

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

Slutsats

I den här artikeln hoppas jag att du lärde dig hur den abstrakta klassen deklareras, hur den fungerar, hur den utökas med utökade nyckelord, hur den abstrakta metoden deklareras i basklassen och hur den implementeras i den härledda klassen. Exemplen som förklaras hjälper dig att lära dig konceptet enkelt. Hoppas att den var beredd att vara tillräckligt användbar för att förstå och öva mer.

Rekommenderade artiklar

Detta är en guide till abstrakt klassen i PHP. Här diskuterar vi hur fungerar Abstract Class i PHP med provkoden och lämpliga utgångar. Du kan också titta på följande artiklar för att lära dig mer -

  1. Objekt i PHP
  2. PHP-konstanter
  3. Cookie i PHP
  4. Mönster i PHP
  5. Factorial i PHP
  6. PHP magiska konstanter
  7. Abstrakt klass i C ++
  8. PHP rekursiv funktion
  9. Rekursiv funktion i Python
  10. Rekursiv funktion i C
  11. Rekursiv funktion i JavaScript

Kategori: