为什么在覆盖继承的方法时出现此错误?

时间:2010-02-05 01:28:21

标签: c# inheritance

这是我的父类:

    public abstract class BaseFile
    {
        public string Name { get; set; }
        public string FileType { get; set; }
        public long Size { get; set; }
        public DateTime CreationDate { get; set; }
        public DateTime ModificationDate { get; set; }

        public abstract void GetFileInformation();
        public abstract void GetThumbnail();

    }

这是继承它的类:

    public class Picture:BaseFile
    {
        public override void  GetFileInformation(string filePath)
        {
            FileInfo fileInformation = new FileInfo(filePath);
            if (fileInformation.Exists)
            {
                Name = fileInformation.Name;
                FileType = fileInformation.Extension;
                Size = fileInformation.Length;
                CreationDate = fileInformation.CreationTime;
                ModificationDate = fileInformation.LastWriteTime;
            }
        }

        public override void GetThumbnail()
        {

        }
    }

我想当一个方法被覆盖时,我可以用它做我想做的事。有什么帮助吗? :)

2 个答案:

答案 0 :(得分:10)

您无法更改已覆盖方法的签名。 (协变返回类型除外)

在您的代码中,如果我运行以下内容,您会发生什么:

BaseFile file = new Picture();
file.GetFileInformation();  //Look ma, no parameters!

filePath参数是什么?

您应该将基础和派生方法的参数更改为相同。

答案 1 :(得分:1)

您在派生类中有一个未在父类中声明的参数。 (string filepath方法中的getFileInformation