![]() |
#1 |
Участник
|
Абстрактные методы
Имеем некую иерархию классов
class1->class2 У каждого класса определен метод void calculate() { ... /* любой код*/ } У class1 есть метод void init() { this.calculate(); } Вопрос: каким образом будет выглядеть последовательность вызова методов? (я пропускаю вызов конструкторов и деструкторов) static void job1(Args _args) { class2 cl2; cl2 = new class2(); cl2.init(); } class2\init(); class1\init(); class1\calculate(); или class2\init(); class1\init(); class2\calculate(); Нужно ли для второго случая объявлять метод calculate() как abstract у первого класса? |
|
![]() |
#2 |
Moderator
|
Цитата:
class2\init();
class1\init(); class1\calculate(); или class2\init(); class1\init(); class2\calculate(); |
|
![]() |
#3 |
Участник
|
кажись
class2\init(); class1\init(); class1\calculate(); при условии, что class2 не переопределяет метод calculate() |
|
![]() |
#4 |
Moderator
|
Цитата:
при условии, что class2 не переопределяет метод calculate()
Цитата:
У каждого класса определен метод
void calculate() { ... /* любой код*/ } |
|
![]() |
#5 |
Moderator
|
Кстати такие вопросы быстрее проверить, чем ждать ответа на форуме...
![]() |
|
![]() |
#6 |
Участник
|
Цитата:
Изначально опубликовано Андре
Кстати такие вопросы быстрее проверить, чем ждать ответа на форуме... ![]() ЗЫ: лично у себя я заметил интересную особенность. как только я задаю вопрос на форуме, практически сразу ко мне приходит "озарение" в виде ответа, и становится ужасно стыдно за себя, что не "дожал" сам и обратился запомощью. |
|
![]() |
#7 |
Участник
|
Цитата:
Изначально опубликовано Андре
У каждого класса определен метод void calculate() тада согласен с тобой.. и с тем, что быстрее проверить)).. |
|
![]() |
#8 |
Moderator
|
Цитата:
но у начинающего программиста, тем более если его насильно пересадили с одноэса на Х++, такие вещи вызывают непонимание. И где же ему набраться опыта, как не на форумах.
![]() ![]() |
|
![]() |
#9 |
Участник
|
Цитата:
Изначально опубликовано Андре
Сергей, как я понимаю в одном офисе сидим ![]() ![]() А вообще я понял. Абстрактными методами мы пользуемся, если класс-потомок должен ОБЯЗАТЕЛЬНО переопределить какой-нибудь метод. Например, в RunBaseReport есть абстрактный метод lastValueElementName, в котором нужно вернуть имя отчета. |
|
![]() |
#10 |
Участник
|
Цитата:
Изначально опубликовано Dubinski Serguei
если его насильно пересадили с одноэса на Х++, Если бы насильно после Х++ пересадили за 1С - эт было бы хуже)).. Цитата:
Изначально опубликовано Dubinski Serguei
Я, например, нашел здесь много интересного для себя. И, надеюсь, эта информация тоже будет кому-нибудь полезной. |
|
![]() |
#11 |
Moderator
|
Цитата:
Абстрактными методами мы пользуемся, если класс-потомок должен ОБЯЗАТЕЛЬНО переопределить какой-нибудь метод.
Можно сказать, что это аналог java-ого интерфейса - то есть мы задаем тот минимальный набор методов, которые все потомки ОБЯЗАНЫ реализовать. |
|
![]() |
#12 |
Moderator
|
Цитата:
не для асов ООП, конечно. Но, когда только лишь теоретические знания про ООП, или же полученные от Delphi - то вопрос заставляет призадуматься)).
![]() |
|
![]() |
#13 |
Участник
|
Цитата:
Изначально опубликовано Андре
Можно сказать, что это аналог java-ого интерфейса - то есть мы задаем тот минимальный набор методов, которые все потомки ОБЯЗАНЫ реализовать. |
|
![]() |
#14 |
Moderator
|
Цитата:
и что, все методы, описанные в интерфейсе обязательно должны быть реализованы в классе или классах?
p.s. Я всего лишь провел аналогию с интерфейсом. |
|
![]() |
#15 |
Участник
|
все, спс, с абстрактными метода все понятно..
посмотрим, что будет, когда дойдет до использования на практике :-) |
|
|
![]() |
||||
Тема | Ответов | |||
Методы таблицы в DataSources (DAX4) | 2 | |||
Найти display методы | 12 | |||
Слетают методы на полях в датасорсе... как бороться? | 6 | |||
display-методы в группах | 2 | |||
edit и display методы | 4 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|