問題描述:
static修飾的方法不能調用非static修飾方法
問題原因:
在Java中,靜態方法(如main方法)可以直接訪問靜態成員(包括靜態變量和靜態方法),但不能直接訪問非靜態成員(實例變量和實例方法)。這是因為靜態方法屬于類而不是類的實例,它可以在類被加載時直接調用,而無需創建類的實例。
當你把多個類寫在一個文件下時,如果其中一個類的靜態方法調用了另一個類的構造函數(即創建了該類的實例),這就相當于在靜態上下文中引用了非靜態成員,會導致編譯錯誤。
而當你將每個類寫在單獨的文件中時,每個類的靜態方法都只能直接訪問自己類的靜態成員,而不能直接訪問其他類的非靜態成員。這樣設計有利于代碼的清晰度和可維護性,也符合面向對象編程的原則。如果需要在靜態方法中訪問其他類的非靜態成員,應該通過創建類的實例來實現。