抽象クラスと同様に、抽象メソッドもあります。 abstract キーワードを使用して、抽象メソッドと抽象クラスの両方を宣言します。このトピックでは、PHP の Abstract クラスについて学習します。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
継承の概念に従って、親クラスは派生クラスによって拡張されます。親クラスのメソッドは、派生クラスによって実装または定義されます。 PHP では、抽象クラスと抽象メソッドを使用することで、親クラスをより具体的にすることができます。
抽象クラスには、抽象メソッドが強制的に 1 つ含まれます。また、この抽象クラスには他の非抽象メソッドも含めることができます。
構文
1 つのメソッドを抽象として持つ抽象クラスの構文。
abstract class DemoAbstractClass() { abstract public function DemoAbstractMethod(); }
抽象メソッド
abstract public function DemoAbstractMethod();
この記事では抽象クラスの働きを学びます。それは次のようになります。
ここで、抽象クラスには抽象メソッドが強制的に 1 つあることがわかります。
非抽象メソッドも存在する可能性があります。抽象メソッドには、基本クラス内の宣言のみが含まれます。つまり、名前とパラメーターのみがあり、他のコードはありません。
メソッドをさらに定義し、そのメソッドを操作するには、このメソッドを基本クラスを拡張する派生クラスに実装する必要があります。また、この抽象クラスをインスタンス化してオブジェクトを作成することはできませんが、基本クラスから派生したクラスをインスタンス化してオブジェクトを作成できることにも注意してください。
以下に PHP の抽象クラスの例をいくつか示します
以下のプログラムでは、抽象クラスのオブジェクトが作成されたときに何が起こるかを学びます。
抽象クラス Student は、Student クラスの 1 つの抽象メソッド favouriteSubject() メソッドと、学生の役割を設定および取得する setRollNo() や getRollNO() などの他の 2 つの非抽象メソッドを含んで作成されます。これは、次のオブジェクトを作成することによって行われます。派生クラス (基本クラスの拡張)。
コード:
<?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(); ?>
出力:
この例は、この例のコードとともにプログラムが出力された後で、ステップごとに以下で説明されます。
コード
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();
出力:
抽象クラスは、派生クラスのスケルトンと呼ぶことができます。上の例では、抽象クラス Student と、学生のマーク用の $m というプロパティを宣言します。
例 2 の説明
abstract class Student { abstract public function calulatePercentage(); }
抽象クラスは、派生クラスのスケルトンと呼ぶことができます。この例では、抽象クラスとメソッドを他のメソッドとともに宣言します。
上記の例では、学生の割合と与えられた点数を計算するための抽象メソッドを使用して、抽象クラス Student を宣言しました。
また、生徒のマークを設定し、生徒の好きな科目を取得するメソッド (抽象的ではありません) も作成しました。
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 キーワードを使用します。これで、Ram によって取得されたマークのパーセンテージを計算するために、percentage() メソッドが計算されました。
class Ram extends Student{ public function calulatePercentage(){ $percentage = ($this->m /100 ) * 100; return 'The percentage of Ram is '.$percentage. '%' .'<br>'; } }
さらに学ぶために、基本クラス Student を拡張するもう 1 つのクラスを宣言します。
上記の例では、基本クラス Student から作成された派生クラスとして Sherry を作成しました。これには拡張キーワードが使用されます。これには 2 つの関数があります。abstract、基本クラスの calulatePercentage() メソッド、もう 1 つは抽象ではない favouriteSubject() メソッドです。
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();
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 中国語 Web サイトの他の関連記事を参照してください。