2010-07-17 34 views
0

我的問題是這樣的。我有一個XMLUtility類我是否應該在派生類中有一個構造函數?

public class XmlUtility 
    { 

     protected string FilePath; 

     protected string XMLFileName; 

     protected XmlDocument SettingsFile; 


     public XmlUtility(string inFilePath, string inXMLFileName) 
     {  

      FilePath = inFilePath; 
      XMLFileName = inXMLFileName;  

      if (isFilePresent() == false) 
      {      
       createXMLFile();     
      } 

      else 
      { 
       SettingsFile = new XmlDocument(); 
       SettingsFile.Load(FilePath + "\\" + XMLFileName);  
      } 

     } 

public bool isFilePresent() 
     {     
      return File.Exists(FilePath + "\\" + XMLFileName) ? true : false; 

     } 

等基本功能,如addSetting,removeSetting,checkSettingExists等,這類非常基本的XML設置文件提供的功能。

所以現在我需要更高級的設置處理。所以我創建了另一個類並從XMLUtility類派生出來。

public class KeyPairingXML : XmlUtility 
    { 




    } 

所以我最初的想法是我不需要有這個類的構造函數,因爲它會調用基類的構造函數。但是我錯了。

public KeyPairingXML(string inFilePath, string inXMLFileName) : base(inFilePath, inXMLFileName) 
     { 



     } 

我的問題是上面的代碼是否正確?我是否需要在此構造函數中寫入整個檢查過程,還是將由基類的構造函數處理?只是一個空的代碼塊是正確的?

+1

只是一個說明 - 你可以省略?真假;從你的isFilePresent()方法 - 返回File.Exists(FilePath +「\\」+ XMLFileName);足夠。 – 2010-07-17 19:11:03

+0

哦,是的! :) Thanx爲指出,+1 – 2010-07-17 19:19:49

回答

3

不知道你所使用的語言,但對於大多數(如Java或C#),你可以ommit在派生類型定義構造函數,如果:

  1. 基類沒有定義構造函數(因此它有一個隱含的默認構造函數)
  2. 基類定義了一個無參數的構造函數。在這種情況下,它可以有其他構造函數,它不會改變東西

但是,您的基類只定義了一個非默認構造函數,因此您需要在派生類中重新定義它。以下代碼是正確的:

public KeyPairingXML(string inFilePath, string inXMLFileName) 
    : base(inFilePath, inXMLFileName) { 
} 

您還應該能夠調用基類的公共方法。你是否看到任何錯誤/警告?

+0

Thanx!我只是想知道我寫的代碼是否正確:)公共方法問題已解決,因爲我沒有向類庫添加必需的引用。 – 2010-07-17 19:12:21

相關問題