0

私はPHPを勉強していて、考えていました、

抽象クラスまたはインターフェース内のメソッドは、抽象メソッドと呼ばれます。

私の質問:

抽象クラス内で定義されている抽象メソッドはありますか?/インターフェイスはサブクラス内に含まれていませんか?

それが本当なら、それは次のことを意味します。

サブクラス内のみが抽象として定義されていないメソッド/プロパティです。これは、実装時にインターフェイスがサブクラスを作成できないことを意味します。

次の意味もあります。

抽象クラス/インターフェースから定義された抽象メソッドが、抽象クラス/インターフェースを拡張/実装するクラスである場合、メソッドのシグネチャを見て、それらのメソッドがオーバーライドされていることを確認するだけです(実際にはオーバーライドしていないので、書き換えはより良い言葉です)言う(オーバーライドが聞こえますが))。

抽象的な方法を専門的に理解するのを手伝ってくれる人がいるなら、良い一日を。

4

2 に答える 2

4

抽象クラスは、1 つ以上の抽象メソッドを含む単純なクラスです。抽象クラスは基本的に不完全であるため、インスタンス化できません。サブクラスの一種の青写真として機能します。

抽象メソッドは、完全に定義されていないメソッドです。署名はありますが、実装はありません。実装はサブクラスで行う必要があります。サブクラスは非抽象メソッドを自動的に継承しますが、抽象メソッドは実装する必要があります。

于 2012-06-01T08:59:57.363 に答える
1

ptracticeではこれが起こることです:

インターフェイスは1つ以上のインターフェイスから継承でき、インターフェイスを実装するクラスはすべての基本インターフェイスも実装します。インターフェイスのインスタンスを作成することはできません。代わりに、インターフェイスを実装するクラスを作成し、そのクラスのオブジェクトを作成する必要があります。何かがそれらのインターフェースの1つであるタイプのオブジェクトを必要とする場合、言及されたクラスのオブジェクトが適合します。

抽象クラスは、1つだけのクラスから継承できます。抽象クラスのインスタンスを作成することはできません。代わりに、抽象クラスを継承し、そのオブジェクトを持つ派生クラスを作成する必要があります。また、フィールド、抽象メソッドまたは抽象メソッドではないメソッドを含めることができ、1つ以上のインターフェースを実装します。抽象クラスから継承するクラスは、抽象であるか、基本クラスから継承されたすべての抽象メソッドを実装する必要があります(クラスが抽象の場合、それらの抽象メソッドは継承されて、以降の派生クラスに実装されます)。抽象基本クラスまたは抽象基本クラス自体に実装されているインターフェイスの1つであるタイプのオブジェクトが必要な場合は、前述の派生クラスのオブジェクトが適合します。


インターフェイスの概念が導入されたとき、クラスの多重継承がより一般的であり、インターフェイスは単なる一種のクラスでした(一部の人はまだそのようにそれを参照しています)。時間の経過とともに、インターフェースは別の概念になり、多重継承はインターフェース間でのみ許可されるように制限されてきました。

于 2012-06-01T09:01:17.303 に答える