java - 在main方法中,为什么可以调用同一个类的构造函数呢?
问题描述
这与我的理解正好相反。如果我错了,请纠正我。Java 不允许静态引用非静态方法,但我们一直从 main 方法调用构造函数方法……我假设构造函数在这里是隐式非静态的。
public class Temp {
// Constructor
public Temp(){
}
public static void main(String[] args) {
// Calling constructor within main method
Temp tmp = new Temp();
}
}
解决方案
它是 new 和 constructor 的结合,允许在 main 方法中调用构造函数的原因。如果假设,创建一个构造函数:
公共 SampleTest(){}
从 main 方法调用它:
场景 1:如果我直接从 main 方法调用该构造函数而不使用 new 关键字::
SampleTest();
结果 1:它抛出编译时异常“SampleTest 类型的方法 SampleTest() 未定义”
场景 2:如果我在该类中创建了一个名为 SampleTest() 的方法,如下所示(其返回类型为 void,因为我们没有构造函数的返回类型):
public void SampleTest() {}
public static void main(String[] args){
SampleTest();
}
结果 2:它抛出编译时异常“无法从 SampleTest 类型对非静态方法 SampleTest() 进行静态引用”
场景 3:现在如果在构造函数调用之前添加 new 关键字,如下所示:
new SampleTest();
结果 3:所以现在只允许在 main 方法中使用new运算符和构造函数调用的组合,而不会显示任何异常。
所以最后,从 main 方法调用构造函数背后的原因是 new 和构造函数的组合。否则,它将构造函数视为任何其他实例方法,抛出异常,如结果 1 和 2。
推荐阅读
- c++ - 这个指针对字符串流有什么作用?
- r - 用列表中的一些值计算每一行
- angular - 捆绑时导出角材料 - 使用 manfredsteyer/ngx-build-plus
- mongodb - 使用 EasySearch 进行 Meteor.users 收藏搜索
- r - 在 R 中为 API 使用 POST 时缺少参数
- sql - SQL查询以获取特定年份的当前日期(考虑月份和日期)的数据
- octobercms - 来自前端的关系 [十月 cms]
- docker - 在 Docker 运行命令中使用 --reset 和 register 标记?
- firebase - 如何从firebase函数访问firestore
- android - 关于api的一点困惑