質問

インターフェイスでメソッドの静的タイプを指定できないのはなぜですか。

これを行う代替手段はありますか?

しかし、抽象クラスのinsfaceのみを使用する必要があります。

/

インターフェイスでアクセス指定子を指定する際に問題はありますか?

Interfaceでイベントを指定したいのですが、実装されたクラスのみがアクセスする必要があるため、そのイベントの保護されたアクセス指定子が必要です。

と私は別のクラスのインターフェイスを使用できる特定の機能があり、その場合はパブリックアクセス指定子を使用できます。

役に立ちましたか?

解決

どの言語を使用しているかわかりませんが、C#のように答えます。

インターフェイスでメソッドの静的タイプを指定できないのはなぜですか。 これを行うための代替手段はありますか?

静的メソッドをオーバーライドできないためです。 何を達成しようとしていますか?

インターフェイスのメンバーは、C#では常にパブリックです。他の保護レベルが必要な場合は、抽象クラスを使用します。インターフェイスからイベントにアクセスできない場合、保護されたイベントの目的は何ですか?その場合、インターフェイスとは何の関係もありません(インターフェイスにコードを含めることはできません)。クラスを実装するだけがイベントを発生させることができると言及している場合、それらを発生させることができるのはそれらだけであることを安心してください。イベントはそのように構築されます-クラス自体のみがイベントを発生させることができます。クラスの外部でイベントを発生させることはできません(クラスにメソッドがあり、イベントを発生させる場合を除く)。

他のヒント

インターフェースは、実装者を公開するだけです。インターフェイスの唯一のアクセス修飾子は「内部」です。インターフェイス自体に、同じアセンブリのすべてのメンバーまたは「InternalsVisibleTo」で認識されたメンバーのみに見えるインターフェイスを作成します。属性。

実装者のみが特定のイベントを表示する必要がある場合、そのイベントは何らかの種類の基本クラスである必要があります。

静的メソッドは、手続き型プログラミングの名残です。それらには用途があります(拡張メソッドなどを参照)が、実際にはOOPとはあまり関係ありません。

最初の質問で何を言っているのかわかりませんが、インターフェイスで保護を使用することに関する2番目の質問は、「いいえ」です。インターフェースは「インターフェース」と呼ばれます。彼らは" interface"を指定しているため(つまり、パブリックメソッド)で、そのオブジェクトと通信できます。

OOPでの私の経験はActionscript 3に関連していますが、相対的なものであると確信しています。

静的メソッドはオーバーライドできません。また、クラスが祖先クラスを拡張する場合、静的メソッドは使用されません。

インターフェイスはPUBLICメソッドのセットアップに使用されるため、アクセス修飾子はインターフェイスでは使用されません。

AS3では、インターフェイスは単なるブロックのないメソッドシグネチャですが、データ型を含みます。

ゲッター/セッターメソッドシグネチャもインターフェイスで使用できることに注意することが重要です。これらは便利です。セッターのみを使用する場合は、カプセル化されたプライベート変数への読み取り専用パブリックアクセスを作成します。

抽象クラスではなくインターフェイスに関する限り、それはすべて、コードの実装方法に依存します。多くの場合、継承とポリモーフィズム(拡張/実装)を利用して、時間とインターフェイスと抽象クラスを組み合わせてさまざまな結果を達成します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top