-1

Facebookで見つけた答えを探していますが、「メソッド内でコンストラクターを宣言することは可能ですか」と混乱しました

4

5 に答える 5

2

短い答え: いいえ

長い答え: これは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、メソッド内でコンストラクターを宣言することはできません。

于 2013-06-29T06:47:04.373 に答える
1

メソッド内でコンストラクターを宣言することはできません。

コンストラクターとメソッドはどちらもオブジェクトのコンポーネントです。オブジェクトには、インスタンス化するときに呼び出されるコンストラクターがあります。インスタンス化されると、オブジェクトにはそれを定義するためのプロパティと、処理を行うためのメソッドが含まれます。

コンストラクターを宣言に配置しようとすると、コンパイル エラーが発生します。

これは、Sun の認定試験に向けた数年間の実践と研究の成果です。

于 2013-06-29T06:46:57.020 に答える
0

いいえ、できません.Javaは内部メソッドの概念をサポートしていません.コンストラクターもメソッドのようなものです.コンストラクターはクラス内でのみ宣言できます。

于 2013-06-29T06:44:45.407 に答える
0

コンストラクター、メイン メソッドによく似たメソッドです。コンストラクターはクラスのオブジェクトを初期化するために使用され、戻り値はありません。

于 2013-06-29T06:47:07.993 に答える