0

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

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

しかし、抽象クラスの代わりにインターフェイスのみを使用する必要があります。

/

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

インターフェイスでイベントを指定したいのですが、実装されたクラスのみがアクセスできるようにする必要があるため、そのイベントへの保護されたアクセス指定子が必要です。

その場合、パブリックアクセス指定子を使用できます。

4

4 に答える 4

2

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

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

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

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

于 2009-03-04T08:03:21.793 に答える
1

インターフェイスは、実装者を一般に説明するだけです。インターフェイスの唯一のアクセス修飾子は、インターフェイス自体の「内部」です。これにより、インターフェイスは、同じアセンブリのすべてのメンバー、または「InternalsVisibleTo」属性で認識されるメンバーにのみ表示されます。

実装者だけが特定のイベントを見る必要がある場合、そのイベントは何らかの基本クラスにある必要があります。

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

于 2009-03-04T08:01:42.543 に答える
0

最初の質問であなたが何を意味するのか途方に暮れていますが、インターフェイスでの保護された使用に関する2番目の質問は、まっすぐな「いいえ」です。インターフェイスは、そのオブジェクトと通信できる「インターフェイス」(つまり、パブリック メソッド) を指定するため、「インターフェイス」と呼ばれます。

于 2009-03-04T08:02:30.017 に答える
0

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

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

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

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

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

抽象クラスではなくインターフェイスに関する限り、すべてはコードをどのように実装するかによって異なります。多くの場合、インターフェイスと抽象クラスは一緒に使用され、継承とポリモーフィズム (拡張/実装) を利用してさまざまな結果を達成します。

于 2009-03-04T08:13:50.910 に答える