1
public static class ViewHolder {

        public int a,b;
            public void method();


    }

当我将类声明为静态时,方法和变量 a 和 b 默认是静态的,还是必须单独声明它们为静态的?我知道这是一个愚蠢的问题,但我现在有点困惑:(

4

4 回答 4

6

不,默认情况下它们不是静态的,它们是普通的实例成员。

静态内部类,不像普通的内部类,可以有静态成员,但是,如果你显式声明它们。

于 2012-04-20T19:30:48.847 回答
2

不,当您声明一个内部静态类时,您指定声明本身是 static,因此您不需要父类的对象实例来访问它。

不涉及内部成员。

于 2012-04-20T19:31:26.807 回答
1

静态嵌套类的成员不是静态的。static用 class 指定关键字,表示嵌套类可以用类似于静态数据成员的包含外部类来实例化。

BaseClass.StaticNestedClass nestedClass = new BaseClass.StaticNestedClass();
nestedClass.nonStaticMethod();//correct
BaseClass.StaticNestedClass.nonStaticMethod()//Error

这对作为普通类的静态嵌套类的数据成员没有影响。

请注意,如果static关键字与 a 相关联,class则该类必须是嵌套类

于 2012-04-20T19:39:50.700 回答
0

公共静态类的工作方式与任何其他类一样。唯一真正的区别是它是通过包含类访问的:

OuterClass.InnerClass foo = new OuterClass.InnerClass();
于 2012-04-20T19:32:37.420 回答