定義: クラスでは、メソッド本体のないメソッドは抽象メソッドです (つまり、メソッドは {} を使用せず、直接セミコロンで終わります)
abstract function test(); //抽象方法 function test(){ //有方法体,但方法体为空的 }
メソッドが抽象メソッドの場合、抽象メソッドを使用する必要があります。なぜ抽象メソッドを使用するのでしょうか。
クラス内のメソッドが抽象クラスの場合、このクラスは抽象クラスです
クラスが抽象クラスの場合、これクラスは抽象
で変更する必要があります。抽象クラスは、クラス内に抽象メソッドがあり、その他はすべて変更されないため、特別なクラスです。抽象クラスでメンバー属性、定数、および非抽象メソッドを宣言することもできます。
//普通的类class 类名{ }// 抽象类abstract class 类名 { } abstract class Demo{ var a; abstract function fun1(); function fun2() { }}
抽象クラスを使用したい場合は、その抽象クラスを継承するクラスを使用する必要があります。また、このサブクラスを使用したい場合、つまりサブクラスに次のことを許可する場合は、クラスを使用する必要があります。オブジェクトを作成するには、サブクラスが必要です。抽象クラスになることはできなくなり、サブクラスは親クラスのメソッドをオーバーライドできます (メソッド本体を抽象メソッドに追加します)。抽象メソッドのメソッドにはメソッド本体がなく、サブクラスはこのメソッドを実装する必要があります (親クラスには具体的な実装は記述されませんが、サブクラスはこのメソッド名を持つ必要があります)
抽象クラスをリストします。いくつかの仕様を定義し、これらの仕様に従ってサブクラスに独自の関数を実装させることができます。
インターフェースは特別な抽象クラス、抽象クラスは特別なクラスです
インターフェイスと抽象クラスは同じ機能を持ちます
抽象クラスは、特定のクラスの標準を提供します実装 、インターフェイスは純粋なテンプレートです。インターフェイスは関数のみを定義し、実装内容は定義しません。インターフェースはキーワードinterfaceで宣言されます。
PHP は単一継承であるため、抽象クラスを使用する場合、その抽象クラスを実装したサブクラスは他のクラスを継承できません。一部の仕様を実装するだけでなく、別のクラスから継承したい場合。インターフェイス
interface 接口名{ const 常量名 = 常量值; //接口中的属性必须为常量 function 函数名();}echo 接口名::常量名; interface Demo{ const HOST = "localhost"; function fun();}echoDemo::HOST; //输出为localhost
関数は同じで、どちらもオブジェクトを作成できません。どちらも実装にはサブクラスが必要です
インターフェイスの宣言は抽象クラスとは異なります
インターフェースは実装されていますが、方法が異なります
インターフェース内のすべてのメソッドは抽象メソッドである必要があります。宣言できるのは抽象メソッドのみです (抽象の変更は必要ありません)
インターフェイス内のメンバー属性は定数のみを宣言でき、変数は宣言できません
インターフェイス内のメンバーのアクセス権限はパブリックである必要があり、最も低い権限は抽象クラスは保護されています
extends キーワードを使用する代わりにクラスを使用してインターフェイスを実装し、implements という単語を使用します
implements
を使用する 2 つの目的 1. 複数のインターフェイスを実装できますが、extends ワードは 1 つの親のみを継承します。クラス
2. 拡張と実装は同時に使用できます
サブクラスでオブジェクトを作成したい場合は、すべての抽象メソッドをインターフェースに実装する必要があります
別のインターフェースを継承するインターフェースを定義できます
クラスは複数のインターフェースを実装できます (複数の仕様に従ってサブクラスを開発するため)。カンマを使用して複数のインターフェース名を区切ります
クラスは継承中に次のことができます親クラス、1 つ以上のインターフェイスを実装します (最初に継承してから実装します)
ポリモーフィズムはオブジェクト指向の 3 つの主要な特性の 1 つです。はオブジェクト指向設計の重要な機能です。これは、ポリモーフィズムとしても知られる動的バインディングの機能を示します。ポリモーフィズムの機能により、ソフトウェアは開発および保守中に完全な拡張を実現できます。実際、ポリモーフィズムの最も直接的な定義は、継承関係を持つさまざまなクラスのオブジェクトを呼び出すことができるようにすることです。
以下は、ポリモーフィズムの使用に関するデモです。
<. 🎜>
<html> <head> <metacharset="utf-8"> head> </html><?php interface USB //声明一个USB接口 { function mount(); function work(); function unMount(); } class UPan implements USB //UPan实现了USB的功能 { function mount() { echo "U盘挂载<br>"; } function work() { echo "U盘工作<br>"; } function unMount() { echo "U盘卸载成功<br>"; } } class Wire implements USB //数据线实现了USB的功能 { function mount() { echo "数据线挂载<br>"; } function work() { echo "开始传输数据<br>"; } function unMount() { echo "数据线卸载成功<br>"; } } class PC //声明一个PC类 { function USB($usb) { $usb->mount(); $usb->work(); $usb->unMount(); } } class Person //声明一个Person类 { function usePC() { $pc = new PC; $upan = new UPan; $wire = new Wire; $pc->USB($upan); $pc->USB($wire); } } $p1 = new Person; //实例化一个Person类 $p1->usePC();