Facebookで見つけた答えを探していますが、「メソッド内でコンストラクターを宣言することは可能ですか」と混乱しました
5 に答える
短い答え: いいえ。
長い答え: これはJava 言語仕様、§8.8から来ています:
コンストラクターは、クラスのインスタンスであるオブジェクトの作成に使用されます。
他のすべての点では、コンストラクター宣言は、結果を持たないメソッド宣言のように見えます (§8.4.5)。
コンストラクター宣言はメンバーではありません。これらは継承されないため、非表示またはオーバーライドの対象にはなりません。
次のように宣言されています。
ConstructorDeclaration:
ConstructorModifiers(opt) ConstructorDeclarator
Throws(opt) ConstructorBody
ConstructorDeclarator:
TypeParameters(opt) SimpleTypeName ( FormalParameterList(opt) )
Aは、クラス本体の宣言ConstructorDeclarator
内にのみ存在できます。
ClassBody:
{ ClassBodyDeclarations(opt) }
ClassBodyDeclarations:
ClassBodyDeclaration
ClassBodyDeclarations ClassBodyDeclaration
ClassBodyDeclaration:
ClassMemberDeclaration
InstanceInitializer
StaticInitializer
ConstructorDeclaration <--
ClassMemberDeclaration:
FieldDeclaration
MethodDeclaration
ClassDeclaration
InterfaceDeclaration
;
AMethodDeclaration
には a へのシンボルがないためConstructorDeclaration
、メソッド内でコンストラクターを宣言することはできません。
メソッド内でコンストラクターを宣言することはできません。
コンストラクターとメソッドはどちらもオブジェクトのコンポーネントです。オブジェクトには、インスタンス化するときに呼び出されるコンストラクターがあります。インスタンス化されると、オブジェクトにはそれを定義するためのプロパティと、処理を行うためのメソッドが含まれます。
コンストラクターを宣言に配置しようとすると、コンパイル エラーが発生します。
これは、Sun の認定試験に向けた数年間の実践と研究の成果です。
いいえ、できません.Javaは内部メソッドの概念をサポートしていません.コンストラクターもメソッドのようなものです.コンストラクターはクラス内でのみ宣言できます。
コンストラクターは、メイン メソッドによく似たメソッドです。コンストラクターはクラスのオブジェクトを初期化するために使用され、戻り値はありません。