問題タブ [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.
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.Object
getOne()
c# - 保護されたインターフェイスメンバーを使用できないのはなぜですか?
インターフェイスで保護されたアクセスメンバーを宣言することに反対する議論は何ですか?たとえば、これは無効です。
この例では、インターフェースは、実装者が少なくとも継承者にインスタンスを提供するIOrange
ことを保証します。実装者が望む場合は、スコープを完全に拡張できます。OrangePips
public
インターフェイスのメンバーの目的は、継承者(サブクラス)にprotected
サポートコントラクトを提供することです。次に例を示します。
(確かに、これはsでは機能しませんstruct
)
インターフェイスのprivate
または修飾子のケースの多くはわかりませんが、と修飾子の両方をサポートすることは完全に合理的であるように思われます。internal
public
protected
メンバーをsから完全に分離することにより、sのprotected
メンバーの有用性を説明してみます。interface
interface
継承者のコントラクトを適用するための新しいC#キーワード、を想像してみましょうsupport
。これにより、次のように宣言できます。
これにより、クラスを契約して、保護されたメンバーを継承者に提供できます。
protected
クラスは、そもそもメンバーを提供することによってこの契約をすでに暗示しているため、これは特に有用ではありません。
しかし、これを行うこともできます:
IOrangeSupport
これにより、実装するすべてのクラスに適用しIOrange
、特定のメンバーを提供するように要求しprotected
ます。これは、現在私たちができることではありません。
python - Python の「プライベート」(実装) クラス
次の 2 つの部分で構成される小さな Python モジュールをコーディングしています。
- パブリック インターフェイスを定義するいくつかの関数
- 上記の関数で使用される実装クラスですが、モジュールの外では意味がありません。
最初は、この実装クラスを関数内で定義して「隠す」ことにしたのですが、これでは可読性が損なわれ、複数の関数が同じクラスを再利用すると使用できなくなります。
では、コメントとドキュメントストリングに加えて、クラスを「プライベート」または「内部」としてマークするメカニズムはありますか? 私はアンダースコアのメカニズムを認識していますが、私が理解しているように、それは変数、関数、およびメソッド名にのみ適用されます。
c# - このようにしないと、C# で保護されたメンバーにアクセスできないのはなぜですか?
このコード:
次のエラーが生成されます。
タイプ 'C' の修飾子を介して保護されたメンバー 'CF(D)' にアクセスできません。修飾子はタイプ 'D' (またはそれから派生したもの) でなければなりません
彼らはいったい何を考えていたのでしょうか。(そのルールを変更すると何かが壊れるでしょうか?) そして、F を公開する以外にそれを回避する方法はありますか?
編集:これがなぜなのか理由がわかりました(Gregに感謝します)が、合理性についてはまだ少し当惑しています。与えられた:
D が EF を呼び出せないのはなぜですか?
エラーメッセージは編集されているため、タイプミスがある可能性があります。
c# - 「保護された」と「保護された内部」の違いは何ですか?
誰かが C#の修飾子protected
と修飾子の違いを説明できますか? protected internal
彼らの行動は同じように見えます。
interface - オブジェクト指向の分析と設計
インターフェイスでメソッドの静的タイプを指定できないのはなぜですか。
これを行う代替手段はありますか??
しかし、抽象クラスの代わりにインターフェイスのみを使用する必要があります。
/
インターフェイスでアクセス指定子を指定することに問題はありますか?
インターフェイスでイベントを指定したいのですが、実装されたクラスのみがアクセスできるようにする必要があるため、そのイベントへの保護されたアクセス指定子が必要です。
その場合、パブリックアクセス指定子を使用できます。
c# - C# では、public、private、protected、およびアクセス修飾子がないことの違いは何ですか?
大学時代はずっと を使用してきましたが、 、、および?public
の違いを知りたいです。public
private
protected
また、何も持たstatic
ないのではなく、何をしますか?
c# - 内部インターフェース - 私の無知をさらけ出す
インターフェイスに保護された/プライベートメソッドを使用できない理由を説明するこれら 2つの質問を認識しています。私が解決しようとしているのは、メソッドが呼び出される場所から簡単に制御する方法です:
コンシューマは、デフォルトの IStateMachine を使用するか、独自のロールを作成できます。
Action_ メソッドが IStateMachine 内からのみ呼び出されるようにして、消費者が状態のものをいじり始めないようにする方法があるかどうか疑問に思っていました。これを行う方法はないと思いますが、何かが足りないのではないかと思いました。私はデザインパターンの第一人者ではありません。
java - jog4j RollingFileAppender rollOver()アクセスレベルの拡張に関する問題
RollingFileAppenderを拡張して、ログシステムにメッセージが届かない場合でも回転するようにしようとしています。通常、rollOverメソッドは、メッセージが到着し、回転をトリガーするために時間チェックが行われるときに呼び出されます。
私のバージョンのRollingFileAppenderは、x秒ごとにrollOverを呼び出すため、メッセージが到着しない場合でもローテーションが保証されます。
今私の問題は、RollingFileAppenderrollOverにモディファイアなしのアクセスレベルモディファイアがあることです。したがって、私が望むようにx秒ごとに呼び出すことはできません。
コードを見ると、なぜモディファイアが必要ないのか理解できず、クラスをパッケージに入れてrollOverを呼び出すことにしました。
これは汚い感じです。rollOverを呼び出したい場合、他に選択肢はありますか?