|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.05.2010, 20:51 | #1 |
Пользователь
Регистрация: 06.09.2008
Сообщений: 17
|
Полиморфизм. Как реализовать вызов метода?
Есть класс-предок. У него несколько классов потомков.
Создается массив типа "предок", в котором находятся также объекты типа "потомок". Необходимо ко всему массиву применить метод, который должен работать по-разному в зависимости от типа потомка. Как написать? У разных потомках в сигнатуре метода разное количество параметров. Класс предок не абстрактный. Объекты типа предок тоже должны быть в массиве. Метод, который необходимо применить ко всему массиву в общем то нужен только в двух классах потомках. Подскажите как это реализовать? Если просто переопределять метод в потомках, а потом в зависимости от типа объекта в массиве вызывать метод с определенным количеством параметров, компиллятор ругается... Error 1 No overload for method 'move' takes '6' arguments C:\Users\1\Desktop\Ocean\Ocean\Main Form.cs 120 29 Ocean Move и есть тот самый метод. Не понимаю почему эта ошибка возникает... аргументов везде хватает... Заранее спасибо большое... |
13.05.2010, 21:20 | #2 | ||
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Вот тебе пример полиморфизма:
Цитата:
Цитата:
Последний раз редактировалось profi; 13.05.2010 в 21:28. |
||
13.05.2010, 21:28 | #3 |
Пользователь
Регистрация: 06.09.2008
Сообщений: 17
|
Это все понимаю...
а если возвращаемых значений несколько? тогда как метод описывать? По идее пишу также... а ошибочка... public void move(...., ref a) просто у меня так... как написать правильно? |
13.05.2010, 21:31 | #4 | ||
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
Цитата:
Цитата:
|
||
13.05.2010, 21:35 | #5 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Думаю полиморфизм тут ни при чём. Неплохо бы увидеть ваш код и более конкретные пояснения цели всего этого, возможно это можно сделать как-то проще. Тем не менее, если я вас верно понял, то можно использовать рефлексию для получения информации о том, с объектом какого класса мы имеем дело, приводить его к этому классу и вызывать его метод.
|
13.05.2010, 21:50 | #6 | |
Пользователь
Регистрация: 06.09.2008
Сообщений: 17
|
Цитата:
Массив типа океан. Хищники и преграды должны перемещаться(меняться координаты в массиве), для этого написан метод move, где все в принципе прописано. С вызовом метода проблема... Код:
Создается массив oceanMatr Код:
ткните пожалуйста в ошибку... |
|
13.05.2010, 22:20 | #7 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Мда, с абстракциями не очень вышло ) Едва ли океан можно назвать предком хищника ) Если подобная реализация была вызвана необходимостью передавать всё одним массивом, то в этом нет необходимости, так как у всех классов есть один общий предок - Object. Можно создать массив object'ов и класть туда объекты совершенно разных классов. Кстати, вместо
Код:
Код:
Код:
|
13.05.2010, 22:28 | #8 |
Пользователь
Регистрация: 06.09.2008
Сообщений: 17
|
ааа спасибо огромное вам=))
|
13.05.2010, 23:44 | #9 | |
Пользователь
Регистрация: 06.09.2008
Сообщений: 17
|
Цитата:
Error 1 'object' does not contain a definition for 'move' C:\Users\Кэт\Desktop\Ocean\Ocean\Ma inForm.cs 120 45 Ocean не подскажите в чем сейчас моя ошибка?) |
|
13.05.2010, 23:50 | #10 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
А тип, как у меня, приводите? )
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Необязательные параметры метода -как? | boris-blade | Общие вопросы .NET | 2 | 24.03.2010 03:42 |
Вызов метода в asm вставке. | Mixasik | Общие вопросы Delphi | 3 | 20.02.2010 10:42 |
Как определить время работы метода??? | _Studentka_ | Общие вопросы по Java, Java SE, Kotlin | 1 | 22.11.2009 10:43 |
mootools: вызов метода класса в цикле each | toXx | JavaScript, Ajax | 1 | 18.03.2009 19:20 |
Вызов Метода из др. модуля | Mickle | Общие вопросы Delphi | 2 | 10.05.2007 23:41 |