gpt4 book ai didi

java - 静态方法(main)如何能够捕获非静态方法(构造函数)并执行它?

转载 作者:行者123 更新时间:2023-12-05 09:22:47 24 4
gpt4 key购买 nike

这似乎是一个非常基本的查询,但我在思考下面的静态方法 main() 如何能够使用 new 关键字从中执行非静态方法(显然是构造函数)。虽然我知道 new 也带来了一些其他的东西,但我应该如何说服自己这不是静态和非静态方法不能使用非静态的规则的异常(exception)和静态上下文?

示例代码如下:

public class ConstructorTest {

ConstructorTest(String str)
{
System.out.println("Constructor Printing "+str);
}


public static void main(String[] args) {
// TODO Auto-generated method stub
ConstructorTest cnst=new ConstructorTest("here");
}

}

上面的代码实际打印了 --> Constructor Printing here

换句话说,从静态方法执行非静态方法的主体?

欢迎任何合理的解释。

最佳答案

Java Tutorial指出

[...] Constructors are not members.

因此,调用它们没有问题,因为它们没有绑定(bind)到您的类的实例。这没有意义 - 因此,您不能执行以下操作:

Thing thing = new Thing();
Thing anotherThing = thing.Thing();

构造函数不是方法,因此您不能对它们应用“方法逻辑”。如果您想了解更多信息,整个实例化过程在 JLS 中有很好的记录。 .参见 12.5。新类实例的创建

关于java - 静态方法(main)如何能够捕获非静态方法(构造函数)并执行它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24652407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com