問題タブ [class-visibility]

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

java - Spring BeanFactoryはどのようにして非公開クラスをインスタンス化できますか?

ここで春の初心者。

Springは、私が定義した非公開クラス(つまり、デフォルトの可視性を持つクラス)をインスタンス化できることを確認しました。Springがこれをどのように達成するか誰か教えてもらえますか?なぜこれが許可されるのですか?

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

php - PHPでクラスを拡張しないようにクラスプロパティを保護するにはどうすればよいですか?

このようなことをすることは可能ですか?

子クラスが変数$privateにアクセスできなかった場合は本当に欲しいのですが、クラスベースの開発のパラダイムだけに基づいてそれが可能かどうかはわかりません。

プライベートプロパティは、私が探している機能を提供しません。

これは正確なPHPコードではないことを理解していますが、これは単なる例です;)

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

php - インクルード ファイルからプライベート メソッドまたは保護されたメソッドを呼び出す

myclass.php

拡張子.php

さて、これが問題です。明らかにエラーをスローするインクルード ファイルからプライベート メソッドを呼び出していることが明らかな人もいます。私の質問は:

1. インクルード ファイルで外部関数を使用してプライベート メソッドを呼び出す方法はありますか?

2. インクルード ファイルを使用してプライベート メソッドにアクセスし、クラス ファイルを多くの関数で肥大化させずに関数を別のファイルに拡張するにはどうすればよいですか?

3. それは可能ですか?

ありがとう

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

php - CodeIgniter の別のコントローラーでコントローラー関数を呼び出す

codeigniter アプリケーションにコントローラー「ユーザー」がいます。このコントローラーには、次の関数がありますlogged_user_only()

この関数は という別の関数を呼び出すis_logged()ため、セッションが設定されているかどうかを確認するだけで、はいの場合は true を返し、そうでない場合は false を返します。

この関数を同じコントローラー内の任意の関数の先頭に配置すると、ユーザーがログに記録されていないかどうかがチェックされ、login_formそれ以外の場合はリダイレクトされて続行されます。これはうまくいきます。例えば、

logged_user_only()別のコントローラーの関数でこの関数を呼び出して、ユーザーがログインしているかどうかを確認したいと思いますか?

PS。これができない場合、または推奨されない場合、複数のコントローラーでアクセスするには、この関数をどこに配置すればよいですか? ありがとう。

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

.net - Mono.Cecilでタイプのアクセサーを変更する方法

これは可能ですか?

パブリッククラスを内部にしたい。

ありがとう

0 投票する
6 に答える
2427 参照

uml - UML クラス図にクラスの可視性を示すことはできますか?

クラスの可視性は、オブジェクト設計の重要な部分です。いくつかの UML ブックで、非パブリック クラスを示すサンプル図を見たことがありません。また、他のツールの中でも、Enterprise Architect でクラスの可視性を示す方法を見たことがありません。Enterprise Architect やその他のツールを使用すると、メタモデルでクラスの可視性を設定できますが、これを図で表示する方法はまだ見ていません。

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

java - リフレクション メカニズムを使用して、デフォルトの可視性を持つ基本クラスに存在するパブリック メソッドを呼び出す方法は?

この質問は、Java プログラミング言語のリフレクション メカニズムに関するものです。

私はインターフェースを持っています:

このインターフェースにはいくつかの実装クラスがあります。ここにいくつかの例があります:


(編集済み)補足として(これはリフレクションメカニズムに関する問題とは関係ないかもしれません):

複雑なルールセットを実装しています。このルールセットの欠点の 1 つは、オブジェクト間に多くの相互依存関係があることです。したがって、インターフェイスの一般的な動作を定義する必要があります。ルールセットの一部を実装する場合、まだ実装されていない別の部分の動作を考慮する必要があります。

インターフェイスの実装が異なれば、適切に機能するために異なるリソース/オブジェクトが必要になります。重複コードを減らすために、抽象親クラスを使用します。これらの抽象クラスは、パッケージの外では使用されません。

具体的な実装クラスのインスタンスをインスタンス化して初期化するとき、私はリフレクション メカニズムに頼っています。この目的のために、目的のクラス名、どのフィールドがどの値を取得するか (つまり、適切なセッター メソッドが検索される)、およびセッター メソッドの順序を指定する必要があるユーティリティ クラス (別のパッケージに存在する) があります。呼ばれます。

2 つの異なる開発環境があり、それぞれに異なるバージョンの Java がインストールされています (1.5.x と 1.6.x)。これは主に、実装の動作をクロスチェックするために使用されます。

具象実装クラスのインスタンスのインスタンス化は、両方の環境で機能します。ただし、古い Java バージョンでは初期化に失敗します。どういうわけか、基本クラス (基本クラスにはデフォルトの可視性があります) のパブリック セッター メソッドにアクセスできません。新しい Java バージョンでは、setter メソッドへのアクセスに問題はありません。

私が見つけた 1 つの回避策は、基本クラスの可視性を変更することです (デフォルト -> パブリック)。問題は、可視性 (デフォルト) を維持しながら、リフレクション メカニズムを使用してセッター メソッドを呼び出す方法があるかどうかです。

0 投票する
5 に答える
491 参照

c++ - 純粋な抽象メソッドを他の基本クラスのメソッドで満たす最も簡単な方法は何ですか?

編集:いくつかのコメントによると、単純とは、a) コードが少なく、b) 保守が容易で、c) 間違いにくいことを意味します。

編集 #2:また、プライベート継承の代わりに包含を使用することは、実装が実際に簡素化される場合、好ましくありませんInterfaceImpl

現在、これを行う唯一の方法は、実装者に抽象メソッドを定義させ、呼び出しをターゲットの基本型のメソッドに委任することです。例:

最初は、おそらくこれで問題が解決するのではないかと思いました。

最初の using ステートメントは両方のMethodOneImpl::method1メソッドをパブリックにしますが、実際には との契約を履行せずInterface、 のアクセシビリティを変更しますMethodOneImpl::method1(int)。そして明らかにmethod2、名前が一致しないため、このソリューションを使用できませんでした。

FWIW、私は解決策だと思うものを持っていますが、それは標準の一部ではありません(つまり、コンパイルされません)。私は C++ 委員会に提案をしようと考えていました。誰かアドバイスがあれば、以下のコメントをいただければ幸いです (ただし、アドバイスを回答として提出しないでください)。

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

c++ - C++、派生クラスを保護されたベースにキャストする方法は?

クラスを保護されたベースにキャストする必要があります。

に を追加する必要がありLineますArrayが、Objectベースが表示されません。そのメソッドを公に再実装する必要がありますか、それともオーバーライドできる暗黙のキャスト演算子がありますか?

0 投票する
5 に答える
2881 参照

java - パッケージと可視性

私は SDK を作成しており、クラスを別のパッケージに分離しようとしています。これらのクラスは他の共有クラスを使用しています。問題は、共有クラスを公開すると、私のクラスだけでなく、全員がそれらを見ることができることです。アプリケーションからのみアクセスできるようにする正しい方法は何ですか?

例 :


MyClass1 をパッケージ化する

パッケージ b MyClass2

パッケージ c public MySharedClass


c は public であるため、MySharedClass はそれにアクセスできますが、問題はそれが世界にも表示されることです。どうすればそれを防ぐことができますか?