0

PHP で非抽象クラスよりも抽象クラスを使用する利点を何時間も探してきました。抽象クラスをインスタンス化できないことはわかっていますが、これはシングルトン デザイン パターンの優れた機能です。しかし、私のポイントは、どちらも基本クラスとして機能できるため、抽象クラスを使用する他の理由はありますか? このようなすべての回答PHPで抽象クラスを使用すると、どのような利点がありますか? これについて言及していないことがわかりました。別の質問に答えただけです。つまり、基本クラスを使用する利点は何ですか? それで、私の質問は、インスタンス化できないことを除いて、通常の基本クラス以外の抽象基本クラスを使用する理由はありますか?

4

1 に答える 1

1

抽象クラスを直接インスタンス化することはできませんが、抽象メソッドと非抽象メソッドの両方を含めることができます。

抽象クラスを拡張する場合は、そのすべての抽象関数を実装するか、サブクラスを抽象化する必要があります。

通常のメソッドをオーバーライドして抽象化することはできませんが、(最終的には) すべての抽象メソッドをオーバーライドして非抽象化する必要があります。

抽象キーワードは、クラスまたはメソッドにパターンとしてラベルを付けるために使用されます。インターフェイスに似ていますが、変数とメソッドの実装を含めることができます。

抽象クラスに関しては多くの誤解があります。以下は、Dog の抽象クラスの例です。開発者が他の開発者のために、または自分自身が拡張するために基本的な Dog クラスを作成したい場合、そのクラスを抽象として宣言します。Dog クラスを直接インスタンス化することはできません (誰もできません) が、Dog を独自のクラスで拡張することはできます。SmartDog は Dog などを拡張します。

Dog クラスによって抽象として宣言されたすべてのメソッドは、Dog を拡張する各クラスで手動で実装する必要があります。

たとえば、抽象class Dogには抽象メソッドがありDog::Bark()ます。しかし、すべての犬の吠え方は異なります。したがって、各 Dog-subclass では、その犬がどのように吠えるかを具体的に記述しなければならないため、たとえば を定義する必要がありますSmartDog::Bark()

于 2013-10-09T09:05:44.517 に答える