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