Java中構造方法被別封裝后的調用


類的封裝性不只是體現在對屬性的封裝上,實際上的方法也是可以被封裝的,當然,在方法的封裝中也包含了對構造方法的封裝。如下代碼就是對構造方法進行了封裝。

代碼如下:

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("你好!");
   }
}

運行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM