静态类未初始化。它们不是物体。静态方法不应该使用与状态相关的信息,静态变量也不应该改变。它们的存在是为使用不需要实例的类的人员提供功能和参数。他们还允许你做一些访问班级私人成员的东西。
实际上,类甚至不是静态的 - 它们只有静态成员(方法和变量)。
我想,在MyStaticClass中,方法start()没有被定义为静态,这意味着你必须首先实例化一个MyStatic类实例。
静态类本质上为您提供创建子类而不创建子包的机会。他们的工作方式与普通课程完全一样,但您必须通过他们的MasterClass致电他们。
public class MyClass{
public static class MyStaticClass{
public MyStaticClass(){
//Construct
}
public void MyMethod(){
//Do stuff
}
public static void MyStaticMethod(){
//Do Static Stuff
}
}
}
将导致以下属性:
MyClass C1 = new MyClass(); //Totally Legal
MyClass.MyStaticClass C2 = new MyClass.MyStaticClass() //Also legal
MyClass.MyStaticClass.MyStaticMethod() //Legal
C1.MyStaticClass.MyStaticMethod() //Legal, but odd
C2.MyStaticMethod() //Also legal, also odd
C2.MyMethod() //Legal, intended use.
C1.MyStaticClass.MyMethod() //Unconditionally Illegal
MyClass.MyStaticClass.MyMethod() //Unconditionally Illegal
MyStaticClass.MyMethod() //Unconditionally Illegal
你什么异常? –