是否可以使用void返回类型的构造函数?

Nar*_*mar -4 java constructor

我想知道是否可以使用void返回类型的构造函数,如下例所示.

例如

class A
{
    void A(){}  //where A is constructor and for which return type is void

    public static void main(string arg[]){
        A a = new A();
    }
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 6

构造函数没有结果/返回类型.

如果将结果/返回类型添加到"构造函数",则将其转换为名称与类名相同的方法.然后new将无法使用它,并且方法中的任何this(...)super(...)调用将是语法错误.


对于您的示例,您实际上不会收到错误.这是因为Java将为...添加默认的no-args构造函数,A因为您实际上没有定义任何构造函数.在new你的榜样将实际使用默认构造函数....

如果您将代码更改为:

class A {
    void A() { System.err.println("hello"); }

    public static void main(string arg[]) {
        A a = new A();
    }
}
Run Code Online (Sandbox Code Playgroud)

编译并运行它,你应该看到它没有给你任何输出.删除void,您将看到输出.


所以这里A()作为一种方法

它>>是<<一种方法.但它并非"有效".正如我的示例所示版本......根本没有调用该方法.