首页 文章

构造函数包含void返回类型?

提问于
浏览
-4

for example

A级{

void A()//其中A是构造函数,返回类型是void,它是有效的

{

}

public static void main(string arg [])

A =新A();

}

2 回答

  • 5

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

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


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

    如果您将代码更改为:

    class A {
        void A() { System.err.println("hello"); }
    
        public static void main(string arg[]) {
            A a = new A();
        }
    }
    

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


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

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

  • 0

    您对代码编译的原因感到困惑 . 这是因为 A() 实际上不是构造函数,而是一个方法(遗憾的是它与该类具有相同的名称) . 类 A 有一个隐式的默认构造函数,由 main 使用 . 不使用方法 A() .

    正如其他人所指出的那样,构造函数没有返回类型 .

相关问题