PHP 5 は抽象クラスと抽象メソッドをサポートします。抽象として定義されたクラスはインスタンス化できません。クラス内の少なくとも 1 つのメソッドが抽象宣言されている場合、クラスは抽象宣言されている必要があります。抽象として定義されたメソッドは、その呼び出しメソッド (パラメーター) を宣言するだけであり、その特定の関数の実装を定義することはできません。
注:
抽象クラスを継承する場合、サブクラスは親クラスのすべての抽象メソッドを定義する必要があります
さらに、これらのメソッドのアクセス制御は親クラスのアクセス制御と同じである必要があります。またはもっとリラックスした)。
呼び出しメソッドは一致する必要があります。つまり、必要なパラメータの型と数が一致している必要があります。
例:
<?phpabstract class AbstractClass{ // 我们的抽象方法仅需要定义需要的参数 abstract protected function prefixName($name);}class ConcreteClass extends AbstractClass{ // 我们的子类可以定义父类签名中不存在的可选参数 // 该访问控制只能是公有的(public)或受保护(protected)的 public function prefixName($name, $separator = ".") { if ($name == "Pacman") { $prefix = "Mr"; } elseif ($name == "Pacwoman") { $prefix = "Mrs"; } else { $prefix = ""; } return "{$prefix}{$separator} {$name}"; } }$class = new ConcreteClass;echo $class->prefixName("Pacman"), "\n";echo $class->prefixName("Pacwoman"), "\n";?>
結果:
Mr. Pacman Mrs. Pacwoman
分析:
サブクラスは、親クラスの抽象メソッドの宣言に含まれていないオプションのパラメーターを定義していますが、3 番目のパラメーターと競合しません。
関連する推奨事項:
PHP抽象クラスとインターフェイスの違いの詳細な説明と例の選択
以上がPHP抽象クラスの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。