Прежде чем продолжить, позвольте несколько строк о классе abstact:
По названию слово абстрактное означает нечто существующее в мыслях. Другими словами, это идея, не имеющая физического или конкретного существования.
Но в программировании абстрактный класс - это особый тип класса, который содержит один или несколько абстрактных методов. Абстрактный метод только объявлен, но не содержит реализации.
Абстрактные классы не могут быть созданы напрямую. Чтобы преобразовать абстрактную идею в твердое или конкретное существование, всегда нужно создать подкласс абстрактного класса.
Допустим, мы хотим нарисовать фигуру.
Мы можем легко спроектировать класс Shape таким образом.
Если внимательно наблюдать, что у него есть недостатки. Будь то прямоугольник или квадрат. Но если мы рассматриваем круглую или треугольную поверхность, тогда класс Shape не может выполнить требование ☹️. Потому что площадь круглой или треугольной формы рассчитывается таким же образом. Так в чем проблема 🤔.
Проблема в том, по нашему мнению. Термин Форма - это не объективный термин, это абстрактная идея. Когда мы рассматриваем треугольную или круглую форму, она становится более твердой и конкретной.
Для решения этой проблемы лучше всего подходят абстрактный класс и метод. Мы легко можем решить проблему, используя абстрактный принцип.
Для реализации абстрактного класса в Swift нет абстрактного ключевого слова, такого как C ++ или Java. Но Swift поддерживает протоколное программирование.
Здесь мы объявили Shapeable протокол и поместили абстрактный метод под названием area. Мы разместили этот метод здесь, потому что его реализация будет отличаться для разных типов Shape.
Давайте вернемся к нашей первой структуре Shape, где наш метод площади не подходит для всех типов Shape. Теперь мы можем легко решить эту проблему, подтвердив наш протокол Shapeable.
Вот как Swift работает с абстрактными классами. Удачного программирования 🙂