Абстрактные классы и интерфейсы

Просмотрел видео Шевчука А. про «Абстрактные классы и интерфейсы». Видео в целом понятно, просто, но долго.

Я понял, что абстрактные классы это классы, в которые выносят основы атрибуты того или иного объекта.

Конспект:

Абстракция в ООП — это придание объекту характеристик, которые отличают его от всех других объектов, четко определяя его концептуальные границы.

Абстрагирование в ООП — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимых. Соотвественно, абстракция — это набор всех таких характеристик.

Абстрактные классы в ООП — это базовый класс, который не предполагает создание экземпляров через вызов конструктора напрямую,но экземпляр абстрактного класса создается неявно при построении экземпляра производного конкретного класса.
abstract class MyClass {

}
Абстрактный класс может быть унаследован от абстрактного класса.Реализация абстрактного метода из базового абстрактного класса, в производном классе — не обязательна.

Обычный метод передается производному классу как при наследовании от конкретного класса.
Виртуальный метод передается производному классу как при наследовании от конкретного класса.

Абстрактные методы являются неявными виртуальными методами.
abstract void myMetod(); = virtual void myMetod(){};

Абстрактные классы могут содержать как абстрактные, так и не абстрактные члены.

Однако, я так и не понял, где его необходимо применять на практике.


Интерфейсы

Конспект:

Интерфейс — это семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом.

Интерфейс — стереотип, являющийся аналогом чистого абстрактного класса, в котором запрещена любая реализация.

Для имени интерфейса следует применять в качестве префикса букву «I». Это подсказывает, что данный тип является интерфейсом.

interface IMyInterface{

}

Все методы и переменные интерфейса всегда будут иметь модификатор доступа public

UpCast — приведение в базовому типу.

использовать ключевое слово new если в наследнике нужно создать одноименный метод как в базовом интерфейсе.

+Невозможно создать экземпляр интерфейса.

+Интерфейсы и члены интерфейсов являются абстрактными. Интерфейсы не имеют реализации в С#.

+Интерфейс может содержать только абстрактные члены(методы, свойства, события и индексаторы).

+Члены интерфейсов автоматически являются открытыми, абстрактными, и они не могут иметь модификаторов доступа.

+Интерфейсы не могут содержать константы, поля, операторы, конструкторы экземпляров, деструкторы или вложенные типы(интерфейсы в том числе).

+Класс или структура, которые реализуют интерфейсы, должны реализовать члены этого интерфейса, указанные при его создании.

ВЫВОД:

Вся эта абстрактная хрень, судя по всему, может быть полезной. Так как с помощью её можно избежать ошибки в реализации, пример, создал ты несколько интерфейсов(Человек), один интерфейс отвечает за реализацию общих функций человека: ходит, говорить, спать, думать, любить. Другой интерфейс(Охранник), за какие то более узкие вещь: стрелять, охранять, досматривать. Третий интерфейс, за другие узкие функции: молиться, крестить, наставлять. В итоге при реализации один объект, может в себе содержать как все интерфейсы, т.к только один. Однако, при реализации того или иного интерфейса, придется реализовывать все его методы, а значит, меньше шансов, что либо забыть, классы такой фигни не имеют+конечно множественная реализация интерфейсов.

В общем, нужно осваивать и внедрять))

0

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *