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

我可以重写在父类中编写的、在子类中具有不同名称的抽象方法吗?

  •  0
  • Ranhiru Jude Cooray  · 技术社区  · 14 年前
    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 回复  |  直到 8 年前
        1
  •  9
  •   Jon Skeet    14 年前

    不,在C中重写方法时不能更改名称。

    当然,您可以通过调用 不同的 方法。

    (在命名约定注释中,方法通常是基于pascalc的,以大写字母开头。参数通常采用驼色大小写,以小写字母开头。)

        2
  •  3
  •   Martin Harris    14 年前

    不,你不能。

    可以添加包含相同功能的其他方法,但不能隐藏或重命名继承的方法。

    例如,框架中的stream类具有一个名为 Close() . 这与调用dispose()完全相同,但给出的名称更符合“打开”蒸汽以开始使用它的概念。他们没有删除dispose()方法,只是为客户机提供了另一种(更好命名的)访问相同功能的方法。

        3
  •  3
  •   David Neale    14 年前

    不-这有点违反 Polymorphism (父母能做的任何事,孩子都应该能做)。

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

        4
  •  1
  •   mdma    14 年前

    方法名和参数是标识方法的工具。如果您更改了方法名,那么您将标识一个不同的方法。因为重写是关于在子类中定义相同的方法,所以必须使用相同的方法名。