![]() |
Модераторы: Се ля ви |
![]() ![]() ![]() |
|
Logree |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 331 Регистрация: 22.11.2006 Где: Самара Репутация: нет Всего: 2 |
Здравствуйте уважаемые.. не мог бы кто дать пример где явно показан случай в котором использование абстрактных классов рациананально.... ну ни как я не могу понять зачам их использовать... они дают ещё какие нибудь приимущества кроме экономии памяти?
-------------------- Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
Добавлено через 4 минуты и 52 секунды вообще, прелесть абстрактных классов - в первую очередь, далеко не в экономии памяти. А именно в абстрагировании. Они - это крайний случай предков нескольких разных по логике, но схожих по интерфейсу классов. К примеру, абстрактный класс "передвижной объект" с единственным методом "двигаться в точку" относится и к человеку, и к автомобилю. Несмотря на то, что в остальном эти классы различаются радикально. И чтоб иметь возможность передвинуть объект, независимо от того, какого класса он, можно объявить все передвижные объекты наследником класса "передвижной объект". в принципе, неважно, будет ли класс "передвижной объект" числиться абстрактным, или же будет иметь некоторую обощенную логику(к примеру, запрос e глобального объекта "окружающая среда" информации о том, может ли он передвинуться в заданную точку). Просто определение "абстрактный класс" подчеркивает: никакой наследуемой потомками логики нет: только интерфейс. |
|||
|
||||
0000 |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 11.7.2006 Где: Нижний Новгород Репутация: нет Всего: 5 |
думаю пример понятен...все общие поля и методы определили только в абстрактном классе, наследники подхватят их автоматически... и плюс в использовании...например так:
здесь работает полиморфизм..мы имея лишь общий доступ в фигурам и фактически вызывая метод Draw у класса Shape на деле вызываем переопределенный метод в конкретном классе |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
вобщем, абстрактные классы просто доводят концепцию полиморфизма до абсолюта: классы могут иметь абсолютно разную логику, но идентичный интерфейс.
|
|||
|
||||
SaDFromSpb |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 5.4.2006 Где: Санкт-Петербург Репутация: нет Всего: 3 |
Скорее они доводят до абсолюта идею о том, что тип (читай, интерфейс) может быть отделен от реализации. А полиморфизм.... полиморфизм.... его вообще три вида бывает... И два из них отнють не в ОО-языках появились. -------------------- "За исключением части, касающейся потоков, библиотека Loki написана на стандартном языке С++. Увы, это означает, что многие современные компиляторы не смогут работать с ней в полном объеме." (А. Александреску. Modern C++ design. 2001) |
|||
|
||||
chieftain |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 4.2.2008 Репутация: нет Всего: нет |
Если говорить об абстрактных класссах в java, то эти классы собирают в себя наиболее общие методы (функции) и это на самом деле очень удобно, причем в JAVA абстрактный класс может содержать и реальные, а не только объявленные абстрактные методы.
|
|||
|
||||
![]() ![]() ![]() |
Правила раздела "Философия программирования": | |
|
Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО: • вопросы перспективного развития методов написания ПО; • изменяющиеся языки и методологии программирования; Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Философия программирования | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |