コンストラクターをプライベートにすることはできますか?
質問者:Eterio Wollborn |最終更新日:2020年2月23日
カテゴリ:テクノロジーおよびコンピューティングプログラミング言語
はい。クラスはプライベートコンストラクターを持つことができます。抽象クラスでさえ、プライベートコンストラクターを持つことができます。コンストラクターをプライベートにすることで、クラスがインスタンス化されたり、そのクラスがサブクラス化されたりするのを防ぎます。
また、コンストラクターがプライベートの場合はどうなりますか?プライベートコンストラクターの使用は、シングルトンクラスを提供することです。プライベートコンストラクターを使用すると、一度に複数のオブジェクトを作成できないようにすることができます。プライベートコンストラクターを提供することにより、このクラス以外の場所でクラスインスタンスが作成されるのを防ぐことができます。
同様に、同じクラスにプライベートコンストラクタとパブリックコンストラクタを含めることはできますか?はい、可能です。タイプがプライベート内部クラスであるプライベートフィールドを設定するには、プライベートコンストラクタが必要です。
また、コンストラクターはパブリックにする必要がありますか、それともプライベートにする必要がありますか?
いいえ、コンストラクターは、パブリック、プライベート、保護、またはデフォルトにすることができます(アクセス修飾子はまったくありません)。何かをプライベートにすることは、誰もそれにアクセスできないことを意味しません。これは、クラス外の誰もアクセスできないことを意味します。したがって、プライベートコンストラクターも役立ちます。
コンストラクターを最終にすることはできますか?
いいえ、コンストラクターをfinalにすることはできません。最終メソッドは、サブクラスによってオーバーライドできません。つまり、コンストラクターはJavaで継承できないため、コンストラクターの前にfinalを記述する必要はありません。したがって、javaではコンストラクターの前にfinalキーワードを使用できません。
29関連する質問の回答が見つかりました
コンストラクターは継承できますか?
コンストラクターはクラスのメンバーではなく、メンバーのみが継承されます。コンストラクターを継承することはできません。つまり、スーパークラスの1つのコンストラクターを使用してサブクラスのインスタンスを作成することはできません。
コンストラクターを静的にすることはできますか?
コンストラクターはNON- STATICであり、Javaで静的として宣言することはできません。インスタンスは「new」演算子によって作成され、コンストラクターを呼び出すために初期化する必要はありません(コンストラクターがオブジェクトを初期化するため)。コンストラクターがオブジェクトとして呼び出されることはありません。メソッドのようなコンストラクター()。
抽象クラスはプライベートコンストラクターを持つことができますか?
抽象クラスのプライベートコンストラクターは、(ScalaやKotlinなどのように)封印されたクラスの目的を果たすこともできます。抽象クラス内からサブクラスを提供することはできますが、部外者は拡張/実装できません(@Marko Topolnikが回答したように)。
OOPのコンストラクターとは何ですか?
コンストラクターは、その型のオブジェクトを初期化するオブジェクト指向プログラミングのクラスまたは構造体の特別なメソッドです。コンストラクターは、通常はクラスと同じ名前のインスタンスメソッドであり、オブジェクトのメンバーの値をデフォルト値またはユーザー定義値に設定するために使用できます。
静的コンストラクターとプライベートコンストラクターの違いは何ですか?
静的コンストラクターは、クラスの最初のインスタンスまたは静的データが参照される前に自動的に呼び出されます。これは、インスタンスが作成された任意の数のクラスに対して1回だけ呼び出されます。プライベートコンストラクターは、静的メンバーのみを含むクラスで一般的に使用される特別なコンストラクターです。
シングルトンはデザインパターンですか?
ソフトウェアエンジニアリングでは、シングルトンパターンは、クラスのインスタンス化を1つの「単一」インスタンスに制限するソフトウェアデザインパターンです。これは、システム全体でアクションを調整するために1つのオブジェクトが必要な場合に役立ちます。
プライベートコンストラクターにアクセスするにはどうすればよいですか?
プライベートコンストラクターにアクセスする別の方法は、このクラス内にパブリック静的メソッドを作成し、その戻り型をオブジェクトとして持つことです。はい、私たちはプライベートコンストラクタにアクセスしたり、プライベートコンストラクタを持つクラスをインスタンス化することができます。
コンストラクターを静的として宣言できますか?
コンストラクターはオブジェクトを初期化するために暗黙的に呼び出されるため、静的コンストラクターを持つことに目的はありません。 Javaは、コンストラクターを静的として宣言することを許可していません。コンストラクターは常に何らかのオブジェクトに属します。コンストラクターが静的である場合、サブクラスのオブジェクトはアクセスできません。
Javaでコンストラクターをオーバーライドできますか?
Javaの規則により、コンストラクターはオーバーライドできませんが、メソッドはオーバーライドできます。コンストラクターはオブジェクトで呼び出すことはできませんが、メソッドを呼び出すことはできます。コンストラクターを呼び出すには、オブジェクトを作成する必要があります。法の場合には、当社は、「サブクラスのメソッドがスーパークラスのメソッドを呼び出すことができます」と言います。
静的メソッドをオーバーライドできますか?
静的メソッドは実行時にオブジェクトインスタンスにディスパッチされないため、オーバーライドできません。コンパイラは、呼び出されるメソッドを決定します。静的メソッドはオーバーロードされる可能性があります(つまり、パラメータータイプが異なる限り、複数のメソッドに同じメソッド名を付けることができます)。
偽のコンストラクターとは何ですか?
コンストラクターの何が間違っていますか?説明:デフォルトのパラメーター化されたコンストラクターを定義できます。説明:コンストラクターは、クラスのように定義された変数を持つ新しいオブジェクトを返します。インスタンス変数が新しく作成され、静的変数のコピーが1つだけ作成されます。
コンストラクターがC ++でプライベートの場合はどうなりますか?
一部のコンストラクターがプライベートである場合、それは、クラス自体(および友人)以外の誰もがそのコンストラクターを使用してそのインスタンスを作成できないことを意味します。したがって、getInstance()のような静的メソッドを提供して、クラスのインスタンスを作成したり、フレンドクラス/メソッドにインスタンスを作成したりできます。
コンストラクターが常に公開されているのはなぜですか?
コンストラクターは常にパブリックであるとは限りません。クラスのオブジェクトを作成するたびにパブリックにする必要がありますが、コンストラクターが呼び出されることはわかっていますが、コンストラクターがプライベートセクションで定義されている場合は、呼び出すことができません。したがって、クラスのオブジェクトを作成することはできません。
コンストラクターはC ++でパブリックまたはプライベートですか?
コンストラクターがC ++のクラスに提供されていない場合、コンパイラーはデフォルトの「 public 」コンストラクターを追加します。ただし、コンストラクターが提供され、 privateとして宣言されている場合は、クラスのオブジェクトをクラススコープの外で作成できないことを意味します。
コンストラクターをC ++でプライベートにすることはできますか?
プライベートコンストラクタを使用してC ++クラスのオブジェクトを作成します。 C ++クラスを設計するときは、コンストラクターをプライベート、パブリック、または保護されるように定義できます。 C ++クラスのオブジェクトは、実際には静的関数によって作成され、オブジェクトへのポインターとしてmain関数に渡されることに注意してください。
コンストラクターをオーバーロードできますか?
コンストラクターは、関数のオーバーロードと同様の方法でオーバーロードできます。オーバーロードされたコンストラクターの名前(クラスの名前)は同じですが、引数の数が異なります。渡される引数の数とタイプに応じて、特定のコンストラクターが呼び出されます。
プライベートコンストラクターでクラスを拡張できますか?
答えは、プライベートのデフォルトコンストラクターがある場合、Parentクラスを拡張することはできないということです。あなたは、サブクラスにコンストラクタが利用できるようにする必要があります。この場合、あなたは保護またはパブリックまたは既定のアクセス修飾子を持つデフォルトコンストラクタを持っている必要があります。