Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在main方法中,为什么我们可以调用同一类的构造函数?_Java_Constructor_Main - Fatal编程技术网

Java 在main方法中,为什么我们可以调用同一类的构造函数?

Java 在main方法中,为什么我们可以调用同一类的构造函数?,java,constructor,main,Java,Constructor,Main,这与我的理解正好相反。如果我错了,请纠正我。Java不允许对非静态方法进行静态引用,但我们始终从主方法调用构造函数方法。。。我假设这里的构造函数是隐式非静态的 public class Temp { // Constructor public Temp(){ } public static void main(String[] args) { // Calling constructor within

这与我的理解正好相反。如果我错了,请纠正我。Java不允许对非静态方法进行静态引用,但我们始终从主方法调用构造函数方法。。。我假设这里的构造函数是隐式非静态的

    public class Temp {
        // Constructor
        public Temp(){
        }
        public static void main(String[] args) {
            // Calling constructor within main method
            Temp tmp = new Temp();
        }
    }

这是new和constructor的结合,这是允许构造函数调用main方法的原因。 如果假设, 创建构造函数:

public SampleTest(){}

从主方法调用它:

场景1:如果我不使用新关键字直接从主方法调用该构造函数:

    SampleTest();
结果1:它正在抛出编译时异常“类型SampleTest的方法SampleTest()未定义”

场景2:如果我在该类中创建了一个名为SampleTest()的方法,如下所示(返回类型为void,因为我们没有构造函数的返回类型):

结果2:它正在抛出编译时异常“无法从类型SampleTest对非静态方法SampleTest()进行静态引用”

场景3:现在,如果在调用构造函数之前添加新关键字,如下所示:

  new  SampleTest();
结果3:因此,现在只允许在main方法中结合new运算符和构造函数调用,而不显示任何异常


最后,从main方法调用构造函数背后的原因是new和constructor的组合。否则,它会将构造函数视为任何其他实例方法,抛出结果1和2中的异常。

是否有示例帮助说明您的要求?请在此处显示您的代码,尽管没有明确说明,构造函数方法是静态的。这听起来像是你误解了什么。你能给出一个你不能调用它的原因吗?
  new  SampleTest();