首頁  >  文章  >  後端開發  >  PHP 中的抽象類別

PHP 中的抽象類別

WBOY
WBOY原創
2024-08-29 13:05:571159瀏覽

像抽象類別一樣,也有抽象方法。我們使用abstract關鍵字聲明抽象方法和抽象類別。在本主題中,我們將學習 PHP 中的抽象類別。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

根據繼承的概念,父類別由衍生類別擴充。父類別中的方法由衍生類別實作或定義。 PHP 透過使用抽象類別和抽象方法,讓父類別變得更具體。

抽象類別強制包含一個抽象方法。此外,這個抽象類別還可以有其他非抽象方法。

文法

抽象類別的語法,其中一個方法為抽象。

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

抽象方法

abstract public function DemoAbstractMethod();

抽象類別在 PHP 中如何運作?

本文將學習抽象類別的工作原理,它是這樣的。

現在,我們知道抽象類別必須有一個抽象方法。

也可以有非抽象方法。抽象方法只有基底類別中的聲明。這意味著它只有名稱和參數,沒有其他程式碼。

為了進一步定義該方法並使用該方法,需要在擴展基類的派生類中實作該方法。另外,請記住,該抽象類別無法實例化來建立對象,但可以實例化基底類別衍生的類別來建立物件。

PHP 抽象類別範例

以下是 PHP 中抽象類別的一些範例

範例#1

在下面的程式中,我們了解建立抽象類別的物件時會發生什麼。

抽象類別Student 被創建,其中包含Student 類別的一個抽象方法favouriteSubject() 方法和另外兩個非抽象方法,如setRollNo() 和getRollNO() ,它們設定和獲取學生的角色,這是透過創建物件來完成的衍生類別(擴展基底類別)。

代碼:

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

輸出:

PHP 中的抽象類別

範例#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. '%' .'<br>';
}
}
class Sherry extends Student{
public function calulatePercentage(){
$percentage = ($this->m /100 ) * 100;
return 'The percentage of Sherry is '.$percentage. '%' .'<br>';
}
public function favoriteSubject() {
return 'Favorite subject is Maths';
}
}
$ram = new Ram();
$ram->setMarks(92);
echo $ram->calulatePercentage();
echo $ram->favoriteSubject();
echo '<hr>';
$sherry = new Sherry();
$sherry->setMarks(97);
echo $sherry->calulatePercentage();
echo $sherry->favoriteSubject();

輸出:

PHP 中的抽象類別

抽象類別可以稱為衍生類別的骨架。在上面的範例中,我們聲明了抽象類別 Student 和一個名為 $m 的屬性,用於表示學生的分數。

範例 #2 的解釋

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

抽象類別可以稱為衍生類別的骨架。在此範例中,我們聲明了抽象類別和方法以及其他方法。

在上面的範例中,我們聲明了抽象類別 Students,並使用抽象方法來計算學生的百分比以及給出的分數。

此外,我們還創建了方法(不是抽象的)來設定學生的分數並獲得學生最喜歡的科目。

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

要建立抽象類別 Student 的對象,我們必須擴展 Student 類別並從中建立衍生類別。基類使用extends關鍵字來允許基類擴展。擴展類別後,我們現在可以使用基類方法。

在上面的範例中,Ram 是擴充基底類別 Student 的衍生類別。它使用了extends關鍵字。現在我們已經計算了percentage()方法來計算Ram獲得的分數的百分比。

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

再聲明一個類,擴展基類 Student 以便我們了解更多資訊。

在上面的範例中,我們建立了 Sherry 作為從基底類別 Student 建立的衍生類別。這使用了擴展關鍵字。它有兩個功能:抽象,基底類別中的 calulatePercentage() 方法,另一個是 favoriteSubject() 方法,該方法不是抽象的。

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

現在我們建立基底類別的物件和衍生類別的對象,這會拋出錯誤。因為我們無法實例化,所以該類別被聲明為抽象類別。

因此只能建立衍生類別的物件。完成此操作後,使用此對象,我們將呼叫抽象方法而不是抽象方法,如下所示。

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

Conclusion

In this article, I hope you learned about how the abstract class is declared, how it works, how it is extended using extends keywords, how the abstract method is declared in the base class and how it is implemented in the derived class. The examples explained will help you learn the concept at ease. I hope it was prepared to be useful enough to grasp and practice more.

以上是PHP 中的抽象類別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn