Sobes.tech
Middle

Qual é a diferença entre protocolos e classes no contexto de classes abstratas?

sobes.tech IA

Resposta da IA

Os protocolos definem um conjunto de requisitos (métodos, propriedades) que os tipos (classes, estruturas, enumerações) devem cumprir. Eles não fornecem uma implementação pronta. As classes são modelos para criar objetos que contêm estado (propriedades) e comportamento (métodos).

No contexto de classes abstratas (que em Swift não existem de forma explícita):

  • Imitação de uma classe abstrata por uma classe: Cria-se uma classe que pode ter herdeiros. Alguns métodos podem ser marcados como fatalError ou ter uma implementação vazia, esperando-se que sejam sobrescritos nas subclasses. O estado (propriedades) pode ser comum a todos os herdeiros.
  • Imitação de uma classe abstrata por um protocolo: Define-se um protocolo com um conjunto de métodos e propriedades requeridos. Os tipos que adotam esse protocolo devem fornecer sua própria implementação de todos os requisitos. O protocolo não pode conter estado por si só, apenas requisitos.

Diferença principal: as classes podem fornecer uma implementação base e estado, enquanto os protocolos descrevem apenas a interface sem implementação e estado. A imitação de abstração via protocolo é mais flexível, pois um protocolo pode ser adotado não apenas por classes, mas também por estruturas e enumerações.