构造函数中的代码"void"未执行

yAn*_*Tar -1 java constructor

如果我这样使用

class Test {
    public Test() {
        System.out.println("constructor");
    }
}

public class MainClass {
    public static void main(String[] args) {
        Test t1 = new Test();
        Test t2 = new Test();
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到2输出构造函数构造函数

但是如果我向构造函数添加void(public void Test()) - 输出为空.为什么这么奇怪?

Bac*_*ash 11

这并不奇怪,这是它的正常行为.构造函数没有返回类型

public Test() {
    System.out.println("constructor");
}
Run Code Online (Sandbox Code Playgroud)

是一个构造函数,但是

public void Test() {
    System.out.println("constructor");
}
Run Code Online (Sandbox Code Playgroud)

是一个可以使用的简单方法t1.Test().

此页面列出了构造函数和方法之间的差异:

1)Java中方法与构造函数之间的第一个区别是构造函数的名称必须与类的名称相同,但Java中的方法没有这样的要求.方法可以在Java中具有任意名称.

2)Java中方法和构造函数之间的第二个区别是构造函数没有任何返回类型,但是方法有返回类型并返回一些东西,除非它的void.

3)Java中构造函数和方法之间的第三个区别是构造函数是链接的,它们是按特定顺序调用的,没有这样的方法工具.

4)与方法不同,构造函数在类中声明不被视为Class的成员.构造函数不是由子类继承的,但是子类继承了方法,直到将它们设为私有.在哪种情况下,它们仅在声明它们的类中可见.类似地,私有构造函数意味着您无法从外部创建该类的对象,这是用于在Java中实现Singleton模式的技术之一.

5)Java中方法和构造函数之间的另一个区别是,特殊关键字this和super用于显式调用构造函数.对于方法没有这样的东西,它们有自己的名字可以用来调用它们.


dar*_*jan 5

因为如果添加void到不再是构造函数的构造函数中.它只是一个恰好与类同名的方法.

然后,你可以问"但如果一个不存在,我如何调用构造函数?" 好吧,每个类都有隐式的,无参数的构造函数.

结论:构造函数不能有返回类型.