問題タブ [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のメインからアクセスできますか?
最近、JDK1.6 を使用して Java の学習を開始しました。これがばかげた質問である場合は、ご容赦ください。
main() のオブジェクトからプライベート変数に直接アクセスできる場合、それらはどのように「プライベート」になりますか?
出力は次のとおりです。
java - アクセス指定子とアクセス修飾子の違いは何ですか?
Javaでは、アクセス指定子とアクセス修飾子は同じものですか?
java - 保護されたメソッドの問題を理解するのに役立ちます
2005年4月のSybexCompleteJava 2認定研究ガイド(ISBN0782144195)を読んでいます。この本は、Java認定に合格したいJava開発者を対象としています。
アクセス修飾子(および他の修飾子)に関する章の後で、次の質問(#17)を見つけました:
正誤問題:クラスYがクラスXを拡張し、2つのクラスが異なるパッケージにあり、クラスXにabby()という保護されたメソッドがある場合、Yの任意のインスタンスがYの他のインスタンスのabby()メソッドを呼び出すことができる。
この質問は私を少し混乱させました。
私の知る限り、同じクラス(またはサブクラス)の任意の変数で保護されたメソッドを呼び出すことができます。階層の上位にある変数(実装するインターフェースなど)で呼び出すことはできません。
たとえば、オブジェクトを継承したからといって、オブジェクトのクローンを作成することはできません。
しかし、質問は変数型については何も述べておらず、インスタンス型についてのみ述べています。
少し戸惑い、「本当」と答えました。
本の答えは
誤り。別のパッケージのスーパークラスから保護されたメソッドを継承するオブジェクトは、それ自体でそのメソッドを呼び出すことができますが、同じクラスの他のインスタンスでは呼び出すことはできません。
ここでは、変数タイプについては何もありません。インスタンスタイプについてのみです。
これは非常に奇妙です、私はそれを理解していません。
誰かがここで何が起こっているのか説明できますか?
c# - 内部修飾子で宣言されたクラスのリスト<>をシリアル化しますか?
C#のかなり些細なクラス構造にXMLシリアル化を追加しようとしています。基本的に、ルートクラス(AClassと呼びます)の単一のインスタンスがあり、他のクラス(AnotherClassと呼びます)のいくつかのインスタンスのリストを保持します。
シリアル化するときは、これら両方のクラスを一緒にシリアル化する必要があります。つまり、AClassをシリアル化すると、AnotherClassのリストもシリアル化されます(この質問を参照)。
私はこれをほとんど機能させていますが、問題は、シリアル化中に、XmlSerializerがクラスのプロパティのみを処理したいように見えることですpublic
-リストが宣言されている場合、AnotherClassはまったくシリアル化されませんinternal
。
アセンブリの内部をシリアライザーから見えるようにしてみました。
それは何もしなかったようです。XmlSerializerに、内部で宣言されたオブジェクトのリストを再帰的にシリアル化する方法はありますか?
c# - .NET winforms で ListView を公開するにはどうすればよいですか?
最初のフォームからアクセスできるように、ListView を公開するにはどうすればよいですか?
c# - 内部抽象メソッド。なぜ誰かがそれらを持っているのでしょうか?
今日コードレビューをしていて、ある開発者によって書かれた古いコードに出くわしました。それはこのようなものになります
同じアセンブリ内に派生クラスがある場合、それは機能します
ただし、別のアセンブリで基本クラスを派生させると、コンパイル時にエラーが発生します
それは私に考えさせました。メソッドを内部抽象として宣言するのはなぜですか?
java - Javaで保護された修飾子が期待どおりに機能しない
私は次の2つのファイルを持っています:
Fruit.java:
Apple.java:
予想どおり、Appleクラスから保護されたメソッドprintNameにアクセスすることはできません。これらは、異なるパッケージに存在するためです。次のエラーが発生します。
完全に正しい。しかし、次のようにクラスsuperClassから継承した場合、エラーは発生しません。
参照により、別のパッケージの別のクラスの保護されたメンバーにアクセスできるのはなぜですか?これは違法なアクセスだと思われますね。
私は混乱しています!誰か助けてください。
コードはJava1.6.0_18を使用してコンパイルされました。
c# - C#でデストラクタのアクセス修飾子が許可されないのはなぜですか?
私は小さなプロジェクト用の単純なクラスを作成していて、を使用する代わりにクイックimplのデストラクタを追加することにしIDisposable
ました。アクセス修飾子が付いたデストラクタがあると、コンパイラエラーが発生しました。
私はパブリック、プライベート、プロテクト、そして内部を試しました。アクセス修飾子がなくても正常に機能しました。この記事は、〜destructorが本質的に保護されたFinalize関数のシンタティックシュガーであることを示しているので、少なくともデストラクタで保護されたものを使用できないのは奇妙なことです。記事には、「デストラクタを呼び出すことはできません。デストラクタは自動的に呼び出されます」と記載されています。これは、その動作が強制される方法ですか?
とにかく実装することになりましたIDisposable
が、興味があります...デストラクタにアクセス修飾子を配置できない理由は他にありますか?
c# - リフレクションを使用してプロパティのアクセス修飾子の型を検出する
リフレクションを使用してプロパティを確認するコードをいくつか書きました。リフレクションを使用して、クラスからプロパティのリストを取得しました。
ただし、プロパティが公開されているか保護されているかを確認する必要があります。例えば:
PropertyInfo クラスは、プロパティに関するこの情報を公開していないようです。これを行う別の方法はありますか?
access-modifiers - public および private アクセス修飾子
セッターとゲッターを介してプライベートメンバーにアクセスできる場合、プライベートの用途は何ですか?