Разница между абстрактным классом и конкретным классом

Разница между абстрактным классом и конкретным классом
Разница между абстрактным классом и конкретным классом

Видео: Разница между абстрактным классом и конкретным классом

Видео: Разница между абстрактным классом и конкретным классом
Видео: C# — Абстрактный класс vs Интерфейс 2024, Июль
Anonim

Абстрактный класс против конкретного класса

Большинство популярных современных объектно-ориентированных языков программирования, таких как Java и C, основаны на классах. Они достигают объектно-ориентированных концепций, таких как инкапсуляция, наследование и полиморфизм, за счет использования классов. Классы - это абстрактное представление объектов реального мира. Классы могут быть конкретными или абстрактными в зависимости от уровня реализации функциональных возможностей их методов. Конкретный класс полностью реализует все свои методы. Абстрактный класс можно рассматривать как ограниченную версию обычного (конкретного) класса, где он может содержать частично реализованные методы. Как правило, конкретные классы называются (просто) классами.

Что такое Concrete Class?

Класс по умолчанию является конкретным классом. Ключевое слово class используется для определения классов (например, в Java). И обычно их называют просто классами (без прилагательного конкретный). Конкретные классы отображают концептуальное представление объектов реального мира. Классы имеют свойства, называемые атрибутами. Атрибуты реализованы как глобальные переменные и переменные экземпляра. Методы в классах представляют или определяют поведение этих классов. Методы и атрибуты классов называются членами класса. Как правило, инкапсуляция достигается за счет того, что атрибуты становятся закрытыми, а общедоступные методы можно использовать для доступа к этим атрибутам. Объект является экземпляром класса. Наследование позволяет пользователю расширять классы (называемые подклассами) из других классов (называемых суперклассами). Полиморфизм позволяет программисту подставлять объект класса вместо объекта его суперкласса. Как правило, существительные, встречающиеся в определении задачи, непосредственно становятся классами в программе. Точно так же глаголы становятся методами. Public, private и protected - типичные модификаторы доступа, используемые для классов.

Что такое абстрактный класс?

Абстрактные классы объявляются с использованием ключевого слова Abstract (например, в Java,). Как правило, абстрактные классы, также известные как абстрактные базовые классы (ABC), не могут быть созданы (экземпляр этого класса не может быть создан). Таким образом, абстрактные классы имеют смысл иметь только в том случае, если язык программирования поддерживает наследование (возможность создавать подклассы из расширения класса). Абстрактные классы обычно представляют абстрактную концепцию или сущность с частичной реализацией или без нее. Таким образом, абстрактные классы действуют как родительские классы, от которых происходят дочерние классы, так что дочерний класс будет разделять неполные функции родительского класса, а функциональные возможности могут быть добавлены для их дополнения.

Абстрактные классы могут содержать абстрактные методы. Подклассы, расширяющие абстрактный класс, могут реализовывать эти (унаследованные) абстрактные методы. Если дочерний класс реализует все такие абстрактные методы, он становится конкретным классом. Но если это не так, дочерний класс также становится абстрактным классом. Все это означает, что, когда программист назначает класс абстрактным, он говорит, что класс будет неполным и в нем будут элементы, которые должны быть дополнены унаследованными подклассами. Это хороший способ заключить договор между двумя программистами, упрощающий задачи по разработке программного обеспечения. Программист, который пишет код для наследования, должен точно следовать определениям методов (но, конечно, может иметь свою собственную реализацию).

В чем разница между абстрактным классом и конкретным классом?

Абстрактные классы обычно имеют частичную реализацию или не имеют ее вовсе. С другой стороны, конкретные классы всегда имеют полную реализацию своего поведения. В отличие от конкретных классов, абстрактные классы не могут быть созданы. Поэтому абстрактные классы должны быть расширены, чтобы сделать их полезными. Абстрактные классы могут содержать абстрактные методы, а конкретные классы - нет. Когда абстрактный класс расширяется, все методы (как абстрактные, так и конкретные) наследуются. Унаследованный класс может реализовать любой или все методы. Если все абстрактные методы не реализованы, то этот класс также становится абстрактным классом.

Рекомендуемые: