我自然可以在任何类中拥有类,所以在我的 main
方法中。我也可以访问它的方法及其属性。
但是这段代码不起作用。我知道主要是 static
,所以它是这样的:
主要方法运行,是构建任何类的人,即使是包含它的人。
然后,main应该开始,构造包含它的类,然后是内部的任何类或方法。
package holamundo;
public class HolaMundo {
public class AnotherClass {
// Class body
}
public void method () {
// Code
}
public static void main(String[] args) {
AnotherClass a = new AnotherClass();
method();
}
这样做:
package holamundo;
public class HolaMundo {
public static class AnotherClass {
// Class body
}
public static void method () {
// Code
}
public static void main(String[] args) {
AnotherClass a = new AnotherClass();
method();
}
我们可以说main在AnotherClass
和method
定义中首先运行了吗?
答案 0 :(得分:1)
我试着用自己的话来写这篇文章,但是SCJP 6的书做得更好,所以这就是:
静态嵌套类只是一个类的静态成员 附上课
也许为了更好地理解,这里有一些代码:
public class HolaMundo {
public static class AnotherClass {
public void hello(){
System.out.println("Hello");
}
public static void hola(){
System.out.println("Hola");
}
}
public static void main(String[] args) {
HolaMundo.AnotherClass.hola();
HolaMundo.AnotherClass holaAnother = new HolaMundo.AnotherClass();
holaAnother.hello();
}
}
请注意,如果删除main()
的出现次数,HolaMundo.
方法中的上述代码将继续有效。
如果你感到困惑,这本书的内容更多:
班级本身并不是“静态的”;没有这样的东西 静态类。在这种情况下,静态修饰符表示嵌套 class是外部类的静态成员。这意味着它可以 像其他静态成员一样访问,没有实例 外层。
static
方法(如main()
)不属于任何类的任何特定实例(,也无法访问)。
这意味着静态方法可以创建它有权访问的任何类的新实例,即使它恰好是首先声明所述方法的类的实例。
现在,因为在这种情况下,main()
,AnotherClass
和method()
都是HolaMundo
的静态成员,那么是的,这意味着它们都“一起运行” 。
更具体地说,它们是在JVM首次加载类时加载的(也就是在类加载时)。
答案 1 :(得分:1)
在Java中,非静态嵌套类具有对容器类实例的隐式引用,因此不能在静态上下文中使用(如main方法),因为没有要引用的实例。