Прежде чем продолжить, позвольте несколько строк о классе abstact:

По названию слово абстрактное означает нечто существующее в мыслях. Другими словами, это идея, не имеющая физического или конкретного существования.

Но в программировании абстрактный класс - это особый тип класса, который содержит один или несколько абстрактных методов. Абстрактный метод только объявлен, но не содержит реализации.

Абстрактные классы не могут быть созданы напрямую. Чтобы преобразовать абстрактную идею в твердое или конкретное существование, всегда нужно создать подкласс абстрактного класса.

Допустим, мы хотим нарисовать фигуру.

Мы можем легко спроектировать класс Shape таким образом.

Если внимательно наблюдать, что у него есть недостатки. Будь то прямоугольник или квадрат. Но если мы рассматриваем круглую или треугольную поверхность, тогда класс Shape не может выполнить требование ☹️. Потому что площадь круглой или треугольной формы рассчитывается таким же образом. Так в чем проблема 🤔.

Проблема в том, по нашему мнению. Термин Форма - это не объективный термин, это абстрактная идея. Когда мы рассматриваем треугольную или круглую форму, она становится более твердой и конкретной.

Для решения этой проблемы лучше всего подходят абстрактный класс и метод. Мы легко можем решить проблему, используя абстрактный принцип.

Для реализации абстрактного класса в Swift нет абстрактного ключевого слова, такого как C ++ или Java. Но Swift поддерживает протоколное программирование.

Здесь мы объявили Shapeable протокол и поместили абстрактный метод под названием area. Мы разместили этот метод здесь, потому что его реализация будет отличаться для разных типов Shape.
Давайте вернемся к нашей первой структуре Shape, где наш метод площади не подходит для всех типов Shape. Теперь мы можем легко решить эту проблему, подтвердив наш протокол Shapeable.

Вот как Swift работает с абстрактными классами. Удачного программирования 🙂