問題タブ [protected]

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 投票する
6 に答える
25822 参照

c++ - C++: Why does my DerivedClass's constructor not have access to the BaseClass's protected field?

I have a constructor attempting to initialize a field in a base class. The compiler complains. The field is protected, so derived classes should have access.

//The compiler error

DerivedClass.cpp:3: error: class ‘DerivedClass’ does not have any field named ‘m_data’</p>

Any help is greatly appreciated. Thank you in advance.

0 投票する
2 に答える
1691 参照

java - Java の親の列挙型

以下のコード例では、親クラスの列挙型の値をテストしようとしています。私が得るエラーは「p.theEnumを解決できないか、フィールドではありません。」ですが、値をテストするために親クラスで使用するコードとまったく同じです(明らかにp.なし)。

どこが間違っていますか?:)

0 投票する
8 に答える
44809 参照

php - クラス外の保護されたメンバー変数へのアクセス

誰かがすでに配置しているクラス関数にアクセスして、フィールドのIDを照会しています。結果は、保護されたメンバー変数とともに返されるオブジェクトです。クラス外のメンバー変数値にアクセスする方法を見つけるのに苦労しています。

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

php - PHP 親の子のプライベート プロパティにアクセスする

アプリケーションで一般的な CRUD に使用する親オブジェクトがあります。これには基本的な保存および取得メソッドがあるため、すべてのオブジェクトにそれらを再含める必要はありません。私の子オブジェクトのほとんどは、この基本オブジェクトを拡張します。これはうまくいきましたが、シリアル化された子オブジェクトを取得する際に問題が見つかりました。親オブジェクトで「取得」メソッドを使用して、子のインスタンスを作成し、シリアル化されていない子のプロパティからそれ自体を設定します。これは、オブジェクトを「自己非シリアル化」できることを意味します。

唯一の問題は、子オブジェクトに保護されたプロパティまたはプライベート プロパティがある場合、親オブジェクトはそれを読み取ることができないため、取得中に取得されないことです。

したがって、「自己非シリアル化」するより良い方法、または親オブジェクトが保護されたプロパティを「見る」ことを許可する方法を探していますが、取得プロセス中のみです。

コードの例:

EDITED:「プライベート」ではなく、保護された子プロパティと言うべきでした。

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

c++ - C++「このスコープで宣言されていない変数」-再び

これは本当に単純な質問であり、おそらく何度か答えられた質問だと思います。しかし、私は本当にC ++に夢中になっていて、解決策を見つけられませんでした。私は本当に助けていただければ幸いです。

基本的に:

ヘッダーファイルです。ここで、

Cファイルです。ご覧のとおり、非常に単純なものですが、コンパイルしようとすると、「エラー:'name'はこのスコープで宣言されていません」というメッセージが表示されます。

setNameメソッドをコメントアウトするとコンパイルされます。Ivは「name」をpublicに設定しようとしましたが、それでも同じエラーが発生します。また、setName()で「this-> name = _name」を使用しようとしましたが、その結果、「非メンバー関数での「this」の使用が無効になりました」。

他に何を探すべきかわかりません。前もって感謝します。

0 投票する
8 に答える
18983 参照

java - 抽象クラスの保護されたデータ

私の質問には、具体的には Java、抽象クラス、および保護されたデータの使用が含まれます。すべてのデータを非公開にし、保護されたゲッター/セッターのみを使用する必要があると言われています。

ここで、クラスのカジュアルなユーザーによる直接操作からデータを保護したいこと、およびパブリック データ メンバーは一般的に疑わしい慣行であることを理解しています。「Java プロテクト フィールド vs パブリック ゲッター」( Java プロテクト フィールド vs パブリック ゲッター) を見てきましたが、まだ疑問があります。

抽象クラスでは以下よりも悪い:

子クラスに親/共通機能を提供するために抽象クラスが正確に存在し、保護されたスコープが子へのアクセスを提供することを意図している場合、私はマイナス面を見ていませんユーザーからデータを保護します。上記の質問で、ほとんどの回答は、一般にデータを公開ではなく非公開にする理由の問題に対処しているように見えることに注意してください。私は、子供が使用することを意図した抽象的な親に存在するデータに特に質問を集中しようとしています。これまでに聞いた唯一の合理的なコメントは、親で保護されたデータ (上記の int i など) を使用すると、子クラスで宣言されていない変数を参照するコードが子クラスに残るということです。あまり説得力のない引数です (基本クラスの共通保護データ メンバーを参照してください。) いつかアクセスを変更したくなるかもしれませんが、今度はインターフェースを尊重する必要があります。これは抽象クラスであり、常に 100% 拡張されることを意図しています。

ありがとう!本への特定のタイトル/ページ番号の参照は、「..基本的なJavaプログラミングテキスト...」への参照よりもはるかに役立ちます。

========================================= 10-13-2010
これは、保護されたデータに関する質問と同じくらい、抽象クラスに関する質問でした。OOP でデータを隠すことが良いことかどうかについての回答で、焦点がずれているように見えるのは残念です (回答: はい)。ここには、抽象クラスの性質、通常の非最終クラスとの違い、抽象親で使用するデータ項目の名前と型を固定することの利点など、多くの深みがあります。子クラス。ここには、革新と、抽象的な親クラスから子クラスの実装にまで拡張されたより大きな制御の可能性があると思います。私は、データ隠蔽の利点などの一般原則がドグマになり、イノベーションや新しいパターンやアイデアの開発を阻害する可能性があることを懸念しています。

貢献してくれたすべての人に感謝します。

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

java - Java:パッケージ間の保護されたアクセス

以下の例(保護されたメンバーがサブクラスを介してパッケージの外部からアクセスされている場合)で何が起こっているのかを理解したいと思います。

パッケージ外のクラスの場合、サブクラスは継承を通じてのみ保護されたメンバーを見ることができます。

2つのパッケージがあります:package1package2

  1. package1ProtectedClass.java

    /li>
  2. package2ExtendsprotectedClass.java

    /li>
  3. package2UsesExtendedClass.java

    /li>

保護されたメンバーは継承を通じてのみアクセスできるため、のboo()メソッドはにExtendsprotectedClassアクセスできることが理解されます。foo()

私の質問は、メソッドの参照を介してアクセスするとメソッドが 正常foo()に機能するのに、の参照を介してアクセスすると機能しないのはなぜですか?main()ExtendsprotectedClassepcUsesExtendedClass

0 投票する
2 に答える
7429 参照

c++ - 保護されたコンストラクター + 抽象インターフェイスで make_shared を使用する

抽象インターフェイスとそのインターフェイスから派生した実装があり、コンストラクターが保護されている場合 (これらのオブジェクトの作成はクラス ファクトリからのみ利用可能 - DI パターンを実装するため)、ファクトリ関数で make_shared を使用するにはどうすればよいですか?

例えば:

make_shared は明らかに、InterfaceImpl または実際には IInterface の保護されたコンストラクターにアクセスできず、次のエラーが発生します。

ここを読んで(質問:boost::make_sharedを私のクラスの友達にする方法)、実装クラスに次のものを入れてみました:

それでもコンパイルされません。そこで、もう 1 つ IInterface クラスにも入れました。まだ喜びはありません。ここで私は何を間違えましたか?

編集:「友人」を使用して、コンパイルに使用される完全なソース ファイル...

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

oop - 基本クラスは多くの保護されたメソッドを定義します:それは良いOOP設計ですか?

多くの保護されたメソッドを定義する基本クラスを作成しました。これらのメソッドは、そのサブクラスで呼び出されます。メソッドは、そのサブクラスの基本的な操作を定義します。例えば:

私はそれが良いOOPデザインであるかどうか疑問に思っていますか?ソースを読んでください、私たちはまったく必要ないことを知っSub1ていますBase.bar()、まったくSub2必要ありませんBase.foo()。ちょっと冗長だと思います。しかし、私はより良い解決策を知りません、誰かがいくつかのアドバイスを与えることができますか?ありがとう!

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

moq - void メソッドの呼び出し時に保護された Moq の変更

moq void メソッドを使用し、呼び出されたときに保護されたプロパティに値を設定したいと考えています。

何かのようなもの:

保存時の Id が Guid.Empty ではないことをセットアップしたい。Save は void メソッドであるため、戻り値はありません。次を使用します。

動かない..