2010-05-17 2 views
0
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(); 
     } 




    } 

Есть ли в любом случае, что я могу изменить имя функции add в классе XMLSettings для addSetting, но убедиться, что он переопределяет функцию добавления в Настройщике? Я знаю, что он должен быть определенно переопределен в производных классах, но просто хочу знать, могу ли я использовать другое имя :) Thanx заблаговременно: DМогу ли я переопределить абстрактный метод, написанный в родительском классе, с другим именем в дочернем классе?

+0

единственный способ создать функцию addSetting, а затем вызвать add –

ответ

9

Нет, вы не можете изменить имя при переопределении метода на C#.

Конечно, вы можете переопределить метод и реализовать его только путем вызова метода разных методов.

(На именовании ноте, методы не обычно PascalCased, начиная с заглавной буквы. Параметры, как правило, camelCased, начиная с прописной буквы.)

+0

Хотя имена аргументов могут быть изменены в переопределенной функции правильно? –

+3

@ Ranhiru: Да. Однако, поскольку VB (всегда) и C# (с версии v4) поддерживают вызовы с именованными аргументами, это потенциально очень запутанно. Я рекомендую против этого. –

3

Нет, вы не можете.

Вы можете добавить еще один метод, который содержит те же функции, но вы не можете скрыть или переименовать унаследованный метод.

Для примера, класс Stream в структуре имеет метод, называемый Close(). Это точно так же, как вызов Dispose(), но с учетом имени, которое больше соответствует концепции «открытия» пара, чтобы начать использовать его. Они не удалили метод Dispose(), только предоставили клиенту другой (лучший именованный) способ доступа к тем же функциям.

3

Нет - это несколько нарушит Polymorphism (все, что может сделать родитель, дети должны быть в состоянии сделать).

Вы можете создать новый метод и использовать метаданные по старому методу, чтобы направить кого-либо, развивающегося против класса, на использование нового класса.

1

Имя метода и аргументы - это то, что идентифицирует метод. Если вы меняете имя метода, вы определяете другой метод. Поскольку переопределение относится к определению того же метода в подклассе, вы должны использовать одно и то же имя метода.

 Смежные вопросы

  • Нет связанных вопросов^_^