0

実用的な例でインターフェースと基本クラスを学ぼうとしています。Player エンティティを抽象化したいとしましょう。Player.cs では、プレーヤーが割り当てられているすべてのスポーツのすべての共通のプロパティとメソッドにする必要があります。したがって、TeamSportPlayer、IndividualSportPlayer があります。ここでも、FootballPlayer は TeamSportPlayer から派生し、TennisPlayer は IndividualSportPlayer から派生します。このすべてのプレーヤーは、ファースト クラスの Player とそのプロパティにアクセスできる必要があります。

あまり混乱しないことを願っています。

質問: oop に関してプレーヤー表現を抽象化するこの適切な方法はありますか?

この実際の例でこれをどのように行いますか?

4

1 に答える 1

2

抽象クラスは、インスタンスを持つことのないオブジェクトを定義するために使用されます。一方、インターフェイスはオブジェクトの動作を定義するために使用され、インターフェイスは継承階層から独立しています。

あなたのスポーツの例を使用して:

Player.cs抽象クラスにすることができます。名前、年齢、住所など、すべてのプレーヤーが持っているフィールドがあります。しかし、スポーツ フィールドに「プレーヤー」が存在することは決してなく、「サッカー選手」または「バスケットボール選手」が存在します。クラスは、抽象クラス Player.cs から継承されますFootballPlayer.csBasketballPlayer.cs

一方、インターフェイスは、クラスが共有するいくつかの共通の動作を定義します。通常、他のクラスがそれらと対話する方法を定義するために使用されます。たとえば、 と呼ばれるクラスがありTennisPlayer.csBasketballPlayer.csFootballPlayer.cs呼ばれるインターフェースを持つことができますIHasJerseyNumber.cs。バスケットボールとフットボールの選手は背番号を持っているので、IHasJerseyNumber.csインターフェースを継承します。テニス プレーヤーには番号がなく、インターフェイスを継承しません。のような完全に独立したクラスReferee.csは、同様にインターフェイスを実装できます。ただし、彼も背番号を持っている場合に限ります (一部のスポーツでは可能です)。

ここでもっと読むことができます:

インターフェース

抽象クラス

于 2012-11-25T20:22:59.603 に答える