Beatriz da Silva
Posted on October 15, 2023
Classes
Classes são bem parecidas com Structs mas tem algumas diferenças importantes:
1. Init
Classes não tem init padrão, caso tenha propriedades na classe você sempre tem que criar o seu próprio init ao cria-la.
2. Herança
Uma classe pode ser criada herdeira de outra classe, assim ela ganha as propriedades e métodos da classe pai; É possível adicionar novas propriedades e métodos nela.
Por segurança o Swift sempre nos faz usar super. init()
em classes filho, pra caso a classe pai faça algo importante no init não tenha nenhum problema.
Sobrescrever métodos
Caso queira sobrescrever algum método da classe pai é só colocar a palavra reservada override
no início da implementação do método na classe filho.
Final Class
Classes com a palavra final
no início não podem ser herdadas e ter seus métodos sobrescritos, geram erro em tempo de compilação.
final
também pode ser usado em métodos ou propriedades pro mesmo efeito, assim deixando o resto das coisas não marcadas com comportamento padrão pra herança.
3. Cópias
Classes são reference type, quando instanciamos uma classe a RAM aloca um espaço na memória e atribui o endereço à instância criada, objetos tipo referência apontam pro mesmo endereço de memória, por isso apontam pros mesmos dados compartilhados(mudar uma classe, muda todas), já Structs são value type, cada instância cria uma cópia exclusiva dos dados, caso uma instância seja modificada a outra não é.
4. Deinitializers
Classes podem ter deinitializers, que são métodos chamados quando uma instância da classe é destruída.
5. Mutabilidade
Propriedades variáveis em Classes constantes podem ser modificadas livremente, mas propriedades variáveis em Structs constantes não podem.
Posted on October 15, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.