我可以覆盖父类中编写的抽象方法,在子类中使用不同的名称吗?

时间:2010-05-17 11:01:09

标签: c# override parent abstract

abstract class SettingSaver
    {


        public abstract void add(string Name, string Value);
        public abstract void remove(string SettingName);


    }


class XMLSettings : SettingSaver
    {

        public override void add(string Name, string Value)
        {
            throw new NotImplementedException();
        }

        public override void remove(string SettingName)
        {
            throw new NotImplementedException();
        }




    }

无论如何我可以将XMLSettings类中add函数的名称更改为addSetting,但是要确保它覆盖了SettingSaver中的add函数吗?我知道它应该在派生类中明确覆盖但只是想知道我是否可以使用不同的名称:) Thanx提前:D

4 个答案:

答案 0 :(得分:9)

不,在C#中覆盖方法时无法更改名称。

当然,您可以通过调用不同的方法来覆盖该方法并实现它。

(在命名约定上,方法通常是PascalCased,以大写字母开头。参数通常是camelCased,从小写字母开始。)

答案 1 :(得分:3)

不,你不能。

您可以添加另一种具有相同功能的方法,但不能隐藏或重命名继承的方法。

对于此示例,框架中的Stream类有一个名为Close()的方法。这与调用Dispose()完全相同,但给出的名称更符合“打开”蒸汽开始使用它的概念。他们没有删除Dispose()方法,只给客户端另一种(更好命名)的方式来访问相同的功能。

答案 2 :(得分:3)

不 - 这会有点违反Polymorphism(父母可以做的任何事情,孩子应该可以做的)。

您可以创建一个新方法,并使用旧方法上的元数据来指导任何针对该类开发的人使用新类。

答案 3 :(得分:1)

方法名称和参数用于标识方法。如果更改方法名称,则表示您正在识别其他方法。由于重写是关于在子类中定义相同的方法,因此必须使用相同的方法名称。