Co to jest klasa abstrakcyjna?

Podobnie jak klasa abstrakcyjna, istnieją również metody abstrakcyjne. Deklarujemy zarówno metodę abstrakcyjną, jak i klasę abstrakcyjną za pomocą słowa kluczowego abstrakcyjna. W tym temacie poznamy klasę abstrakcyjną w PHP.

Zgodnie z koncepcją dziedziczenia klasa nadrzędna jest rozszerzana o klasę pochodną. Metody w klasie nadrzędnej są implementowane lub definiowane przez klasy pochodne. PHP umożliwia bardziej szczegółowe określenie klasy nadrzędnej, wykorzystując klasy abstrakcyjne i metody abstrakcyjne.

Klasa abstrakcyjna obowiązkowo zawiera jedną metodę jako abstrakcyjną. Ta klasa abstrakcyjna może mieć także inne metody nieabstrakcyjne.

Składnia

Składnia klasy abstrakcyjnej z jedną metodą jako abstrakcyjną.

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

Metoda abstrakcyjna

abstract public function DemoAbstractMethod();

Jak działa klasa abstrakcyjna w PHP?

W tym artykule nauczymy się, jak działa klasa abstrakcyjna i tak to wygląda.

Teraz, gdy wiemy, że klasa abstrakcyjna obowiązkowo ma jedną metodę jako abstrakcyjną.

Mogą istnieć również metody nieabstrakcyjne. Metoda abstrakcyjna ma tylko deklarację w klasie bazowej. Oznacza to, że ma tylko nazwy i parametry bez żadnego innego kodu.

Aby dalej zdefiniować metodę i pracować z nią, metoda ta musi zostać zaimplementowana w klasie pochodnej, która rozszerza klasę podstawową. Pamiętaj również, że nie można utworzyć instancji tej klasy abstrakcyjnej do tworzenia obiektów, ale można utworzyć instancję klasy pochodnej z klasy podstawowej w celu utworzenia obiektów.

Przykłady klasy abstrakcyjnej w PHP

Oto kilka przykładów klasy Abstract w PHP podanych poniżej

Przykład 1

W poniższym programie dowiadujemy się, co dzieje się, gdy tworzony jest obiekt klasy abstrakcyjnej.

Klasa abstrakcyjna Student jest tworzony zawierający jedną metodę abstrakcyjną favouriteSubject () klasy Studenta oraz dwie inne metody nieabstrakcyjne, takie jak setRollNo () i getRollNO (), która ustawia i pobiera rolę studenta, co jest wykonywane przez utworzenie obiektu klasy pochodnej (rozszerzenie klasy podstawowej).

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

Wynik :

Przykład nr 2

Ten przykład wyjaśniono krok po kroku poniżej, po wyjściu programu wraz z kodem z tego przykładu.

Kod

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

Wynik :

Klasa abstrakcyjna może być nazwana szkieletem dla klas pochodnych. W powyższym przykładzie deklarujemy klasę abstrakcyjną Student i właściwość o nazwie $ m dla ocen studenta.

Wyjaśnienie przykładu 2

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

Klasa abstrakcyjna może być nazwana szkieletem dla klas pochodnych. W tym przykładzie deklarujemy klasę abstrakcyjną i metody wraz z innymi metodami.

W powyższym przykładzie zadeklarowaliśmy uczniów klasy abstrakcyjnej za pomocą metod abstrakcyjnych do obliczenia procentu ucznia wraz z podanymi ocenami.

Ponadto stworzyliśmy metody (które nie są abstrakcyjne), aby ustawić Znaki ucznia i uzyskać ulubiony przedmiot ucznia.

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

Aby stworzyć obiekty klasy abstrakcyjnej Student, musimy rozszerzyć klasę Student i stworzyć z niej klasy pochodne. Klasa podstawowa używa słowa kluczowego extends, aby umożliwić rozszerzenie klasy podstawowej. Po rozszerzeniu klasy możemy teraz korzystać z metod klasy podstawowej.

W powyższym przykładzie Ram jest klasą pochodną, ​​która rozszerza klasę podstawową Student. Wykorzystuje słowo kluczowe extends. Teraz obliczyliśmy metodę percent (), aby obliczyć procent ocen uzyskanych przez Ram.

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

Deklarowanie jeszcze jednej klasy, która rozszerza klasę podstawową Student, abyśmy mogli dowiedzieć się więcej.

W powyższym przykładzie stworzyliśmy Sherry jako klasę pochodną utworzoną z klasy podstawowej Student. To używa słowa kluczowego extends. Posiada dwie funkcje, z których jedna została zadeklarowana jako abstrakcyjna, metoda calulatePercentage () w klasie bazowej, a druga jest metodą FavoriteSubject (), która nie jest abstrakcyjna.

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

Teraz tworzymy obiekt klasy bazowej i obiekt klasy pochodnej, który generuje błąd. Ponieważ nie możemy utworzyć instancji klasy zadeklarowanej jako abstrakcyjna.

W ten sposób można utworzyć tylko obiekt klasy pochodnej. Gdy to zrobisz, za pomocą tego obiektu wywołamy metodę abstrakcyjną, a nie metodę abstrakcyjną, jak pokazano poniżej.

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

Wniosek

W tym artykule mam nadzieję, że dowiedziałeś się o tym, jak deklarowana jest klasa abstrakcyjna, jak działa, jak jest rozszerzana za pomocą słowa kluczowego extends, jak deklarowana jest metoda abstrakcyjna w klasie podstawowej i jak jest implementowana w klasie pochodnej. Wyjaśnione przykłady pomogą ci łatwo nauczyć się pojęcia. Mam nadzieję, że został przygotowany na tyle użyteczny, aby uchwycić i ćwiczyć więcej.

Polecane artykuły

To jest przewodnik po klasie Abstract w PHP. Tutaj omawiamy, jak działa Klasa Abstrakcyjna w PHP z przykładowym kodem i odpowiednimi danymi wyjściowymi. Możesz także zapoznać się z następującymi artykułami, aby dowiedzieć się więcej -

  1. Obiekt w PHP
  2. Stałe PHP
  3. Pliki cookie w PHP
  4. Wzory w PHP
  5. Silnia w PHP
  6. Stałe magiczne PHP
  7. Klasa abstrakcyjna w C ++
  8. Funkcja rekurencyjna PHP
  9. Funkcja rekurencyjna w Pythonie
  10. Funkcja rekurencyjna w C.
  11. Funkcja rekurencyjna w JavaScript