#** 抽象クラス
# * 1. キーワードを使用します: abstract * 2. クラス内に抽象抽象メソッドとして宣言されたメソッドがある限り、このクラスを宣言する必要があります抽象クラスとして * 3. 抽象メソッドはメソッド宣言とパラメータ リストのみを持つことができ、メソッド本体は許可されません。 * 4. 抽象メソッドは不確実であるため、インスタンス化は許可されません。抽象クラスのインスタンス化は、継承によるもののみ許可されます。 * 5. 抽象クラスを継承するサブクラスでは、抽象クラス内のすべての抽象メソッドを実装する必要があります。 * 6サブクラス メンバーへのアクセス 制限レベルは、抽象クラスのコントラクト以下である必要があります。たとえば、抽象クラスが保護されている場合、サブクラスは * protected または public である必要があります。は許可されません * 7. サブクラス メソッドのパラメーターは次と同じである必要があります。抽象クラス メソッドのパラメーターはまったく同じですが、デフォルトのパラメーターは許可されます
* 特別な注意
* 1. 抽象クラスはインスタンス化できませんが、コンストラクターを作成することはできますが、final
として宣言する必要があります。 * 2. 理論上、抽象クラスは静的メンバーを持つべきではありません。プロンプト E_STRICT2048 ですが、それでもこれを実行できます。
abstract class Fruits { //水果名称 protected $name; //声明静态属性,因为要用到静态类中 // protected static $name; //抽象方法 abstract public function eat(); //静态抽象方法 // abstract static public function eat(); //尽管不能直接实例化抽象类,但仍然可以有构造方法 public function __construct() { return '抽象类构造器,实例化时自动调用<br>'; } }
//教育の便宜上、抽象クラスとそのサブクラスはすべて 1 つのクラス ファイルに記述されます
//実際の開発では、クラスごとに独立したクラス ファイルを作成する必要があります
class Apple extends Fruits { protected $name = '苹果'; //声明为静态属性 // public static $name = '苹果'; public function eat() { return $this->name.'可以直接生吃'; } //子类构造方法 public function __construct() { echo parent::__construct(); } //实现抽象类中的抽象静态方法eat() // public static function eat() // { // return self::$name.'可以直接生吃'; // } } $apple = new Apple; echo $apple->eat();
//以前は抽象静的クラスでした。インスタンス化の必要はありません。クラスを使用して
//echo Apple::eat();
以上がPHPの抽象クラスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。