代码之家  ›  专栏  ›  技术社区  ›  Ranhiru Jude Cooray

我应该在派生类中有一个构造函数吗?

  •  0
  • Ranhiru Jude Cooray  · 技术社区  · 14 年前

    我的问题就是这样。我有一个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 回复  |  直到 14 年前
        1
  •  3
  •   marcind    14 年前

    不确定您使用的是哪种语言,但对于大多数语言(如Java或C#),您可以使用ommit在派生类型中定义构造函数,如果:

    1. 基类没有定义构造函数(因此它有一个隐式的默认构造函数)

    但是,基类只定义了一个非默认构造函数,因此需要在派生类中重新定义它。以下代码是正确的:

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