問題タブ [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.
class - オブジェクト指向プログラミングでパブリック、プライベート、保護されているものは何ですか?
オブジェクト指向プログラミングでパブリック、プライベート、保護されているものは何ですか?
vb.net - 入れ子になったクラス VB.NET の親だけが値にアクセスできるようにする方法はありますか?
一般に、OOP パラダイムによると、カプセル化に関する私の理解は基本的に次のように述べています。
- メンバーがプライベートの場合、クラスからのみアクセスできます。
- メンバーが保護されている場合、基本クラスと派生クラスからのみアクセスできます。
- メンバーが公開されている場合は、誰でもアクセスできます。
入れ子になったクラスがある場合、そのクラスと入れ子になっている親クラスのみがアクセスできるようにプロパティを宣言できますか? 例えば:
この例では、これらのメンバーが Private または Protected の場合、ContainerClass のインスタンスから myNestedObject.myInt または myNestedObject.myDbl に直接アクセスすることはできません。しかし、それらをパブリックにしたくないとします。なぜなら、あまりにも公開されてしまうからです。これらは、ContainerClass オブジェクト内だけでなく、どこからでも変更できます。それらを Friend として宣言しても、アプリケーション内のどこからでも変更できるため、依然として弱すぎます。
私がここで行っていることを達成する方法はありますか? そうでない場合、このようなことを達成するためのより賢明な方法を考えられる人はいますか?
c# - 内部保護が内部よりも制限的ではないのはなぜですか?
内部自動プロパティを作成したい:
protected
セッターまたは-を作成することは可能だと思いましたがprotected internal
、エラーアクセシビリティ修飾子はプロパティよりも制限的である必要があります。そうではないですか?Private
ここでは、私を助けません。
編集:
質問は:内部ゲッターと保護されたセッターを使用して自動プロパティを実装するにはどうすればよいですか?
c# - C# のインターフェイス メンバーのアクセス修飾子
次のプロパティからコンパイル エラーが発生します。
エラーは次のとおりです。
「修飾子 'public' はこのアイテムには無効です」
しかし、削除するIWorkItemControl
と正常にコンパイルされます。
このエラーが発生するのはなぜですか? また、署名にインターフェイス名がある場合とない場合の違いは何ですか?
oop - アクセス修飾子の適切な適用
私は、コーディング時にアクセス修飾子をメンバー/型に適切に適用する方法をさらに理解するのに役立つリソースを探している学生です。
私は (C# で) プライベート、パブリック、プロテクテッドなどのアクセス修飾子がどのような制限を設けているかを知っています。自分の小さなプロジェクトをコーディングするときは、すべてを公開する傾向があります。カプセル化を窓の外に放り出すだけなので、これは絶対に恐ろしい習慣だと確信しています。内部対プライベートのようなものをいつ使用するのが正しいのか、私にはわかりません。
アクセス修飾子の適切な使用法を理解するのに役立つリソースはありますか?
c# - MVVM: VM オブジェクトは M オブジェクトを直接公開する必要がありますか?それとも、M のゲッターに委任するゲッターを介してのみ公開する必要がありますか?
説明する最良の方法は、例を使用することです。
これがモデルです
これはビューモデルです
私の質問は次のとおりです
。VM はその人物をデータ テンプレートに公開するか、モデルのプロパティを自分のプロパティでカプセル化する必要がありますか?
c# - 内部抽象クラス:アセンブリの外部での使用を非表示にする方法は?
抽象基本クラスを持つ共通のアセンブリ/プロジェクトがあり、次にいくつかの派生クラスを他のアセンブリに公開したいと考えています。
抽象基本クラスが Intellisense のこれらの他のアセンブリに表示されないようにしたいのでinternal
、作成すると思ったのですが、次のエラーが発生します。
一貫性のないアクセシビリティ: 基本クラス 'Settings' は、クラス 'IrcSettings' よりもアクセスしにくくなっています ....
よくわかりません。私は抽象Settings
クラスを作成することを余儀なくされているため、public
このアセンブリの外に表示されます。
internal
代わりにこのクラスを作成するにはどうすればよいですか?
c# - C#とJavaでのアクセス修飾子のベストプラクティス
OODの経験則は、合理的に達成できる限り、特定のオブジェクトのすべてのメンバーへのアクセスを最小限に抑えることであることを理解しています。
C#とJavaはどちらも、同じアクセス修飾子のセットを実装しているようです。ただし、しばらくの間私を当惑させたのは、Javaクラスがほとんどパブリックとして宣言されているように見えるのに対し、C#クラスはほとんどデフォルトとして宣言されているように見える理由です。 これらの言語にこれらの違いを課す微妙な点はありますか、それとも単に慣習の問題ですか、それとも何ですか?
コンパイラを喜ばせるために、C#コード(内部クラス、匿名クラス、および範囲が狭く有用な他のクラスを除くほとんどのクラスを習慣的に公開しています)を頻繁に使用していますが、何かが足りないのではないかと思います。重要。
c# - C#でのJavaのfinalに相当するものは何ですか?
final
C#の Java に相当するものは何ですか?