PHP では、抽象クラスは主に型の隠蔽とグローバル変数としての役割に使用されます。これらのクラスは、固定された一連の動作の抽象的な記述を構築できます。この一連の動作には、可能な限り、あらゆる特定の実装メソッドを含めることができます。 as クラス内に抽象メソッドがあり、このクラスは抽象クラスです。
この記事の動作環境: Windows 10 システム、PHP バージョン 7.1、Dell G3 コンピューター。
抽象クラスは、問題領域の分析と設計から派生した抽象的な概念を表すためによく使用されます。それらは一見異なる一連のものですが、本質的には同じ具体的な概念を抽象化したもの。
抽象クラスは不完全です。基本クラスとしてのみ使用できます。オブジェクト指向のアプローチでは、抽象クラスは主に型を隠し、グローバル変数として機能するために使用されます。
オブジェクト指向メソッドでは、抽象クラスは主に型の隠蔽に使用されます。固定された一連の動作の抽象的な記述を構築しますが、この一連の動作には可能な具体的な実装を含めることができます。この抽象的な記述は抽象クラスであり、この可能な具体的な実装のセットは、可能なすべての派生クラスによって表されます。モジュールは抽象本体上で動作できます。モジュールは固定された抽象化に依存しているため、変更することはできません。同時に、この抽象化から派生することによって、このモジュールの動作機能も拡張できます。
操作例は次のとおりです。
<?php //抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。 //只要有一个抽象方法,那么此类必须定义为抽象类。 //抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。 //在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。 //抽象类不能定义私有方法,可以定义私有属性。 //如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 abstract class Employees{ protected $name = null; function __construct($nameStr){ $this->name = $nameStr; } abstract public function work(); public function work1(){ echo "<p>$this->name</p>"; } //function __destruct(){} } class Managers extends Employees{ public function __construct($nameStr){ parent::__construct($nameStr); } /*public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 echo "<p>$this->name is working</p>"; }*/ } //$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。 $obj2 = new Managers('e2'); //$obj2->work();
上記のコードを実行すると、次のエラー メッセージが表示されます:
致命的エラー: クラス マネージャーには 1 つの抽象メソッドが含まれているため、抽象メソッドを宣言するか、残りのメソッドを実装する必要があります (従業員:: work) D:\phproot \test\ClassDemo.php の 26 行目
エラー プロンプトの位置と最後のコード コメントを削除した後、次のコードに変更します:
<?php //抽象类像一个模板,供子类扩展(重写),抽象类里有普通方法(有方法体),也有抽象方法,其中抽象方法没有方法体,且以分号结束。 //只要有一个抽象方法,那么此类必须定义为抽象类。 //抽象类不能创建自己的实例,在试图创建抽象类对象时,会产生一个致使错误。 //在子类里实现抽象类的方法,并且可见性要等于、高于抽象方法的可见性,抽象类(public|protected|private),子类(public|public,protected|有致命错误,且不能被继承)。 //抽象类不能定义私有方法,可以定义私有属性。 //如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 abstract class Employees{ protected $name = null; function __construct($nameStr){ $this->name = $nameStr; } abstract public function work(); public function work1(){ echo "<p>$this->name</p>"; } //function __destruct(){} } class Managers extends Employees{ public function __construct($nameStr){ parent::__construct($nameStr); } public function work(){//如果子类没有扩展(重写)抽象类的抽象方法,会产生致使错误。 echo "<p>$this->name is working</p>"; } } //$obj1 = new Employees();//创建抽象类对象时,会产生一个致使错误。 $obj2 = new Managers('e2'); $obj2->work();
テスト実行結果:
e2 は動作しています
推奨学習: 「PHP ビデオ チュートリアル 」
以上がPHPでの抽象クラスの使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。