2017-11-24 16 views
-9

PHPで抽象メソッドを持たない抽象クラスを作成できるかどうかを知りたいです。PHPで抽象メソッドなしで抽象クラスを作成できますか?

「はい」の場合、抽象メソッドを含まない「抽象クラス」としてどのようにクラスを呼び出すことができますか?さらに、それは標準/サポートコードの練習ですか?

いいえの場合は、その理由は何ですか?

抽象クラスには抽象メソッドしか含まれていない可能性があります。それ以上の通常のメソッドはありませんか?

注:適切なコード例で答えが必要です。答えは、PHP言語に固有のものでなければなりません。

+3

是非。 1000人以上の代理人がこのような質問をするよりよく知っています –

+0

@LukeK:この点に関しては、PHPのマニュアルでさえ、PHPに固有のインターネットに関する情報は得られませんでした。だから、私はいくつかの助けを求めています。 – user2839497

+3

@LukeK OPのプロフィールと最近の活動で判断すると、あなたは間違っています:-) – jeroen

答えて

1

抽象クラスは、インスタンス化できないクラスであり、子クラスによって拡張する必要があります。抽象クラス内の任意の抽象メソッドは、拡張子クラスによって実装される必要があります(または抽象クラスでなければなりません)。 可能抽象メソッドを実装しない抽象クラスを持つこと。それは特に有用ではありません。

抽象クラスのポイントは、インターフェイスを事前に定義することができますが、実装を他のものに任せることです。いずれもせずに、正確にどのように見えるか$fooに依存することができ

abstract class Foo { 
    abstract public function bar(); 
} 

function baz(Foo $foo) { 
    echo $foo->bar(); 
} 

baz:あなたは、その抽象インタフェースで動作し、意図したとおり、それは具体的な実装がどうなるか事前に知らなくても、うまくいくことを確認することができますそれがどのように正確に実装されているかを知る

抽象メソッドを持たない抽象クラスを持つと、ヒントFooと入力することができますが、メソッドやプロパティに関しては$fooには何もわからないので、無意味です。

+3

抽象メソッドだけの抽象クラスを持っているなら、おそらくインターフェイスを使用しているはずです。 – jjok

関連する問題