PHP抽象クラスの詳しい説明

小云云
リリース: 2023-03-21 13:24:01
オリジナル
1870 人が閲覧しました

PHP 5 は抽象クラスと抽象メソッドをサポートします。抽象として定義されたクラスはインスタンス化できません。クラス内の少なくとも 1 つのメソッドが抽象宣言されている場合、クラスは抽象宣言されている必要があります。抽象として定義されたメソッドは、その呼び出しメソッド (パラメーター) を宣言するだけであり、その特定の関数の実装を定義することはできません。

注:

  1. 抽象クラスを継承する場合、サブクラスは親クラスのすべての抽象メソッドを定義する必要があります

  2. さらに、これらのメソッドのアクセス制御は親クラスのアクセス制御と同じである必要があります。またはもっとリラックスした)。

  3. 呼び出しメソッドは一致する必要があります。つまり、必要なパラメータの型と数が一致している必要があります。

例:

<?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抽象クラス機能の例

以上がPHP抽象クラスの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート