-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) )

AConstructorDeclarator只能存在于类主体声明中:

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

构造函数一种类似于 main 方法的方法。构造函数用于初始化类的一个对象,它没有返回值。

于 2013-06-29T06:47:07.993 回答
0

根本不可能。

为 a 创建对象时必须调用构造函数class

如果没有实例,您将如何调用该方法,该方法正在构建constructor

有什么意义吗?

于 2013-06-29T06:51:04.837 回答