靜態類未初始化。它們不是物體。靜態方法不應該使用與狀態相關的信息,靜態變量也不應該改變。它們的存在是爲使用不需要實例的類的人員提供功能和參數。他們還允許你做一些訪問班級私人成員的東西。
實際上,類甚至不是靜態的 - 它們只有靜態成員(方法和變量)。
我想,在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
你什麼異常? –