Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > сделать метод public баз. класса private в наслед


Автор: PaZ1T1V 9.10.2009, 18:38
Доброго времени суток!

Есть базовый абстрактный класс А
в нем есть абстрактный открытый метод М()

Код

public abstract class A
{
   public abstract A M();

}


есть наследник B:A

можно ли как-нибудь сделать чтобы  в классе B метод М сделать закрытым?

например

Код


public class B: A
{
   B()
   {
   ..........
   }

   private override A M()
  {
.  ........
  }
}



не переопределять нельзя, вылазит ошибка компилятора, а вот закрыть его ...... можно ли ???

Автор: KelTron 10.10.2009, 16:42
Нельзя, а какой в этом смысл?

Автор: AlexLakers 10.10.2009, 22:18
PaZ1T1V, лучше напиши зачем тебе это нужно, возможно люди чем-нибудь да помогут. 

Цитата
Всё есть число.
                    Пифагор

"Всё подобно числу" smile

Автор: archeg 12.10.2009, 01:07
PaZ1T1V, это противоречит нормальной логике. Если ты наследуешься от класса А, то логично что ты ожидаешь что все дети класса А будут иметь его интерфейс. Если тебе это не нужно, то тогда зачем наследоваться от класса А?

Если уж очень надо убить функциональность метода - то можешь его переопределить и вписать в нем throw new NotImplementedException(). Майкрософт так очень любит делать  smile 

Автор: AlexLakers 12.10.2009, 10:56
Цитата

Если уж очень надо убить функциональность метода - то можешь его переопределить и вписать в нем throw new NotImplementedException(). Майкрософт так очень любит делать  

Например? 

Автор: mihryak 12.10.2009, 13:47
Цитата(AlexLakers @  12.10.2009,  11:56 Найти цитируемый пост)
Цитата

Если уж очень надо убить функциональность метода - то можешь его переопределить и вписать в нем throw new NotImplementedException(). Майкрософт так очень любит делать  

Например?  

обычно всё же, по-моему, NotSupportedException
его действительно весьма много во фреймворке, например, изрядная часть методов наследников Stream может (и даже порой должна) его кидать

Автор: PaZ1T1V 12.10.2009, 16:52
Да ребята, все понятно, хорошо, сделаю, просто есть несколько наследников от одного абстрактного класса А и все из них кроме одного должны наследовать метод М1 а в последнем это не надо делать.... вот и все а  throw new NotImplementedException(); и не надо прописывать, он по умолчанию там, я про него знал, просто думал есть и еще какой другой способ, знаю что это не логично, но все же...ладно, вопрос решен, тема закрывается....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)