Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> полиморфизм.... 
:(
    Опции темы
PaZ1T1V
Дата 6.10.2009, 04:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 26.2.2008
Где: Багдад )

Репутация: нет
Всего: нет



что-то я совсем с ума сошел.... запутался с ооп на C#пе
я не сомневаюсь что он хорошо, но вот что то мне пока не очень понятен.....
воообщем проблема такая есть классы: 

Код

   public abstract class A
{
   A();
   A(parameters)// не важно в общем
   virtual A method1(A a, A b)
   {
     //тело метода
   }
//дальше пошли абстрактные методы
}

public class B 
{
   B():
   public override A method1(A a, A b)
  {
     //реализация метода
  }
}

  nt main()
{
 B b = new B();
b.method1(); //exception вызывается A.method1
}

i
в общем вопрос таков почему вызывается A.method1() ???? не должен же.... или я не прав ???  и как можно переопределить входные параметры то есть в классе B сделать так override A method1(B a, B b)????
ps не пинайте плиз за один топик два вопроса 

Это сообщение отредактировал(а) PaZ1T1V - 6.10.2009, 05:13
--------------------
[size=8]Atention please!!![/size]
[size=6]Кривые руки[/size]
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
ДобренькийПапаша
Дата 6.10.2009, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Что-то не очень понятный код. Ну и я не понял, как вы вызываете method1() без параметров, если он у вас определён с параметрами?
А вообще, по-моему, код запутанный и некрасивый.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
PaZ1T1V
Дата 6.10.2009, 08:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 26.2.2008
Где: Багдад )

Репутация: нет
Всего: нет



Цитата(ДобренькийПапаша @ 6.10.2009,  11:14)
Что-то не очень понятный код. Ну и я не понял, как вы вызываете method1() без параметров, если он у вас определён с параметрами?
А вообще, по-моему, код запутанный и некрасивый.

без параметров, да, забыл про них, не копипастил код а писал на скорую руку, конечно с параметрами
например так 

Код

    B b1 = new B();
   B b2 = new B();
   B b = new B();
   b = b.Method1(b1,b2);


согласен что не красивый, А КАК ЕГО СДЕЛАТЬ КРАСИВЕЕ ?  вот в чем задача? да и вообще я что-то путаюсь в полиморфизме C#па, точнее не знаю его
ЗЫ за 2 года "знания" сего языка я первый раз столкнулся с большими проблемами ООП, то есть я его считай и не использовал (я про полиморфизм) не было случая и надобности..... хотя зря я это.... факт говорит о том что я еще тот ламер..... сильно плиз не пинайте 

--------------------
[size=8]Atention please!!![/size]
[size=6]Кривые руки[/size]
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LamerTM
Дата 6.10.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 11.3.2006

Репутация: нет
Всего: 0



Типа совет. НИКОГДА не пости в форум код от руки. Код должен быть протестирован и отлажен в студии, и только потом скопипасчен сюда.
В коде куча синтаксических ошибок.
Например у тебя в method1 не указан public. Без этого код не комплится.
Класс B не наследует класс A, и пытается что-то там перекрыть по override. Без наследования код с override не компилится.

Вот здесь у меня всё работает как надо:

Код

 public abstract class X1
    {
        public int az;
        public virtual X1 A()
        {
            az = 5;
            return this;
        }
    }

    public class XB : X1
    {
        public override X1 A()
        {
            az = 65;
            return this;
        }
    }

.....

private void button5_Click(object sender, EventArgs e)
        {
            XB esdhsdjsdklhsd = new XB();
            esdhsdjsdklhsd.A();
            richTextBox1.AppendText(esdhsdjsdklhsd.az.ToString());
            return;
    }


В ричтекстбоксе пишет "65", что свидетельствует о вызове метода A из класса XB. Так нужно?

Это сообщение отредактировал(а) LamerTM - 6.10.2009, 08:59
PM MAIL   Вверх
Rohoss
Дата 6.10.2009, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


Профиль
Группа: Завсегдатай
Сообщений: 1308
Регистрация: 9.10.2006
Где: Matrix

Репутация: 2
Всего: 18



ТС, научись правильно оформлять код, а потом уже занимайся полиформизмом, иначе будешь путаться. 


--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
nmn
Дата 7.10.2009, 01:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 593
Регистрация: 26.11.2005

Репутация: 1
Всего: 1



PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.