類的封裝性不只是體現在對屬性的封裝上,實際上的方法也是可以被封裝的,當然,在方法的封裝中也包含了對構造方法的封裝。如下代碼就是對構造方法進行了封裝。
代碼如下:
class TestClass { private TestClass() { System.out.println("構造方法被封裝了!"); } public void print() { System.out.println("類中的方法!"); } } public class TestDemo { TestClass tc=null;//可以聲明對象 tc=new TestClass(); //無法實例化,因為構造方法被封裝了,實例化方法就相當於調用了構造方法。 }
程序編譯時會出現以下錯誤:
TestDemo.java:6: 錯誤: TestClass()可以在TestClass中訪問private
tc=new TestClass();
那么怎么解決這個方法呢?
封裝是指一切都外部不可見,也就是意味着在外部根本就無法被調用,既然外部不能調用,那在類內部呢?
實例代碼如下:
class TestClass { TestClass tc=new TestClass(); private TestClass() { System.out.println("構造方法被封裝了!"); } public void print() { System.out.println("類中的方法!"); } } public class TestDemo { public static void main(String[] args) { System.out.println("你好!"); } }
編譯結果如下:
編譯不出錯,但是構造方法沒有被調用,那要怎么樣才能調用呢?
大家知道static關鍵字吧,被static修飾的方法就可以用類名來調用
代碼如下:
class TestClass { static TestClass tc=new TestClass(); private TestClass() { System.out.println("構造方法被封裝了!"); } public void print() { System.out.println("類中的方法!"); } } public class TestDemo { public static void main(String[] args) { TestClass tt=null; tt=TestClass.tc;//把對象tc傳遞給了對象tt,也就是調用了構造方法, tt.print(); System.out.println("你好!"); } }
運行結果: