gpt4 book ai didi

java - 静态类、方法和 main()

转载 作者:行者123 更新时间:2023-11-30 08:02:59 27 4
gpt4 key购买 nike

所以,我是一个 Java 菜鸟,我刚刚遇到了一些让我感到困惑的事情。言归正传,我做了一个Foo类,做了一个实例:

public class Main 
{
public static void main(String[] args)
{
Foo foo = new Foo("Foo");
}
}

class Foo
{
public Foo(String A)
{
System.out.println(A);
}
}

我注意到 Foo 类不必是静态的。为什么?鉴于

如果我这样做

public class Main 
{
public static void main(String[] args)
{
Foo foo = new Foo("Foo");
}
static class Foo
{
public Foo(String A)
{
System.out.println(A);
}
}
}

然后它必须是静态的。为什么不同?静态意味着它是实例独立的,因此在静态方法中使用的所有东西也必须是实例独立的(?)使用 Foo 我在静态方法中创建实例,因此 Foo 不需要是静态的。但是里面的类有什么区别呢?我以为我已经了解了静电的概念。但显然我缺乏很多概念。

最佳答案

JLS-8.1.3. Inner Classes and Enclosing Instances 涵盖了这一点这说(部分)

An inner class is a nested class that is not explicitly or implicitly declared static.

An inner class may be a non-static member class (§8.5), a local class (§14.3), or an anonymous class (§15.9.5). A member class of an interface is implicitly static (§9.5) so is never considered to be an inner class.

因此,静态类不是内部类,内部类需要封闭类的实例;喜欢

public class Main {
public static void main(String[] args)
{
Foo foo = new Main().new Foo("Foo");
}
class Foo
{
public Foo(String A)
{
System.out.println(A);
}
}
}

关于java - 静态类、方法和 main(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36501145/

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