問題タブ [access-modifiers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
18841 参照

java - java.lang.Object の保護されたメソッドは、サブクラスからどのように保護されていますか?

このキーワードprotectedは、同じパッケージおよびサブクラス内のクラスへのアクセスを許可します ( http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html )。

現在、すべてのクラスはjava.lang.Objectスーパークラス ( http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html ) として持っています。

java.lang.Objectしたがって、すべてのクラスがのメソッドにアクセスできると結論付けますprotected

次の例を見てください。

正常にgetOne()コンパイルされますgetTwo()が、

がコンパイルされない理由も、( s メンバーgetTwo()のアクセスに関して) との違いもわかりません。java.lang.ObjectgetOne()

0 投票する
15 に答える
61166 参照

c# - 保護されたインターフェイスメンバーを使用できないのはなぜですか?

インターフェイスで保護されたアクセスメンバーを宣言することに反対する議論は何ですか?たとえば、これは無効です。

この例では、インターフェースは、実装者が少なくとも継承者にインスタンスを提供するIOrangeことを保証します。実装者が望む場合は、スコープを完全に拡張できます。OrangePipspublic

インターフェイスのメンバーの目的は、継承者(サブクラス)にprotectedサポートコントラクトを提供することです。次に例を示します。

(確かに、これはsでは機能しませんstruct

インターフェイスのprivateまたは修飾子のケースの多くはわかりませんが、と修飾子の両方をサポートすることは完全に合理的であるように思われます。internalpublicprotected


メンバーをsから完全に分離することにより、sのprotectedメンバーの有用性を説明してみます。interfaceinterface

継承者のコントラクトを適用するための新しいC#キーワード、を想像してみましょうsupport。これにより、次のように宣言できます。

これにより、クラスを契約して、保護されたメンバーを継承者に提供できます。

protectedクラスは、そもそもメンバーを提供することによってこの契約をすでに暗示しているため、これは特に有用ではありません。

しかし、これを行うこともできます:

IOrangeSupportこれにより、実装するすべてのクラスに適用しIOrange、特定のメンバーを提供するように要求しprotectedます。これは、現在私たちができることではありません。

0 投票する
7 に答える
113534 参照

python - Python の「プライベート」(実装) クラス

次の 2 つの部分で構成される小さな Python モジュールをコーディングしています。

  • パブリック インターフェイスを定義するいくつかの関数
  • 上記の関数で使用される実装クラスですが、モジュールの外では意味がありません。

最初は、この実装クラスを関数内で定義して「隠す」ことにしたのですが、これでは可読性が損なわれ、複数の関数が同じクラスを再利用すると使用できなくなります。

では、コメントとドキュメントストリングに加えて、クラスを「プライベート」または「内部」としてマークするメカニズムはありますか? 私はアンダースコアのメカニズムを認識していますが、私が理解しているように、それは変数、関数、およびメソッド名にのみ適用されます。

0 投票する
7 に答える
31604 参照

c# - このようにしないと、C# で保護されたメンバーにアクセスできないのはなぜですか?

このコード:

次のエラーが生成されます。

タイプ 'C' の修飾子を介して保護されたメンバー 'CF(D)' にアクセスできません。修飾子はタイプ 'D' (またはそれから派生したもの) でなければなりません

彼らはいったい何を考えていたのでしょうか。(そのルールを変更すると何かが壊れるでしょうか?) そして、F を公開する以外にそれを回避する方法はありますか?


編集:これがなぜなのか理由がわかりました(Gregに感謝します)が、合理性についてはまだ少し当惑しています。与えられた:

D が EF を呼び出せないのはなぜですか?


エラーメッセージは編集されているため、タイプミスがある可能性があります。

0 投票する
11 に答える
162003 参照

c# - 「保護された」と「保護された内部」の違いは何ですか?

誰かが C#の修飾子protectedと修飾子の違いを説明できますか? protected internal彼らの行動は同じように見えます。

0 投票する
4 に答える
1398 参照

interface - オブジェクト指向の分析と設計

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

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

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

/

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

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

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

0 投票する
17 に答える
733617 参照

c# - C# では、public、private、protected、およびアクセス修飾子がないことの違いは何ですか?

大学時代はずっと を使用してきましたが、 、、および?publicの違いを知りたいです。publicprivateprotected

また、何も持たstaticないのではなく、何をしますか?

0 投票する
3 に答える
313 参照

c# - 内部インターフェース - 私の無知をさらけ出す

インターフェイスに保護された/プライベートメソッドを使用できない理由を説明するこれら 2つの質問を認識しています。私が解決しようとしているのは、メソッドが呼び出される場所から簡単に制御する方法です:

コンシューマは、デフォルトの ISt​​ateMachine を使用するか、独自のロールを作成できます。

Action_ メソッドが IStateMachine 内からのみ呼び出されるようにして、消費者が状態のものをいじり始めないようにする方法があるかどうか疑問に思っていました。これを行う方法はないと思いますが、何かが足りないのではないかと思いました。私はデザインパターンの第一人者ではありません。

0 投票する
1 に答える
1045 参照

java - jog4j RollingFileAppender rollOver()アクセスレベルの拡張に関する問題

RollingFileAppenderを拡張して、ログシステムにメッセージが届かない場合でも回転するようにしようとしています。通常、rollOverメソッドは、メッセージが到着し、回転をトリガーするために時間チェックが行われるときに呼び出されます。

私のバージョンのRollingFileAppenderは、x秒ごとにrollOverを呼び出すため、メッセージが到着しない場合でもローテーションが保証されます。

今私の問題は、RollingFileAppenderrollOverにモディファイアなしのアクセスレベルモディファイアがあることです。したがって、私が望むようにx秒ごとに呼び出すことはできません。

コードを見ると、なぜモディファイアが必要ないのか理解できず、クラスをパッケージに入れてrollOverを呼び出すことにしました。

これは汚い感じです。rollOverを呼び出したい場合、他に選択肢はありますか?