Dev (Back & Front)ARTIGO

Falando sobre Swift – Classes

Classes são definidas com a palavra-chave class e o corpo é cheio de chaves.

Neste capítulo da série sobre SwiftSwift13 conteúdosSwift 6: Segurança na Corrida de Dados — AtoresDev (Back & Front) · jan 2025Swift no Server-Side: o crescimento do Swift além do iOSDev (Back & Front) · mai 2026IA e Machine Learning com SwiftDev (Back & Front) · out 2025Ver tudo em Dev (Back & Front) , vamos falar sobre Classes. Confira o anterior aqui.

Swift é uma linguagem com suporte para conceitos funcionais e orientados a objetos. Classes são definidas com a palavra-chave class e o corpo é cheio de chaves.

Objetos podem ter instâncias variáveis especificadas com var ou constants com let dentro do bloco. Assim como com outras variáveis, o tipo pode ser declarado explicitamente ou inferido por um valor inicial:

Welcome to Swift!  Type :help for assistance.
  1> class Person {
  2.   var firstName = ""
  3.   var lastName:String?
  4. }

Valores não-opcionais precisam ser inicializados in-line, ou em um inicializador.

Uma vez que a classe esteja definida, ela pode ser criada usando um tipo construtor. Propriedades de instância podem ser acessadas utilizando a sintaxe de ponto:

  5> var alex = Person()
alex: Person = {
  firstName = ""
  lastName = nil
}
  6> alex.firstName = "Alex"
  7> alex
$R0: Person = {
  firstName = "Alex"
  lastName = nil
}

Tipos de classe utilizam uma semântica de passagem por referência; duas variáveis podem apontar para a mesma instância. Então, se uma variável é utilizada para mudar o valor, esse valor será observado na outra variável.

  8> var alblue = alex
alblue: Person = {
  firstName = "Alex"
  lastName = nil
}
  9> alblue.firstName = "AlBlue"
 10> alex.firstName
$R1: String = "AlBlue"

Funções de instância podem ser adicionadas à uma classe. Como resultado, é possível adicionar um método fullName que retorne a concatenação do primeiro e do último nome:

11> class Person {
 12.   var firstName = ""
 13.   var lastName:String?
 14.   func fullName() -> String {
 15.     return "\(firstName) \(lastName!)"
 16.   }
 17. }

 18> var alex = Person()
$R2: Person = {
  firstName = ""
  lastName = nil
}

 19> alex.firstName = "Alex"
 20> alex.lastName = "Blewitt"
 21> alex.fullName()
$R3: String = "Alex Blewitt"

Um tipo especial de função pode ser criado para ser utilizado em tempo de criação da classe, chamado de inicializador. Campos podem ser definidos no inicializador para não ser necessário inicializá-los durante a declaração. Entretanto, eles precisam ser declarados do ponto de vista do tipo.

22> class Person {
 23.   var firstName:String
 24.   var lastName:String
 25.   init(first:String, last:String) {
 26.     firstName = first
 27.     lastName = last
 28.   }
 29.   func fullName() -> String {
 30.     return "\(firstName) \(lastName)"
 31.   }
 32. }

 33> Person()
error: missing argument for parameter 'first' in call
Person()
      ^

 33> Person(first:"Alex", last:"Blewitt")
$R4: Person = {
  firstName = "Alex"
  lastName = "Blewitt"
}

Os argumentos são implicitamente nomeados; se você tentar chamá-los sem passar seus nomes (como em Person(“Alex”, “Blewitt”)), o swift vai reclamar que os nomes estão faltando. Isso pode ser resolvido com um underscore _ em frente dos nomes com init, que vai instruir o swift a não considerá-los nomeados:

Depois falaremos com mais detalhes sobre classes. No próximo artigo, veremos como criar structs no Swift. Até lá!

***

Artigo traduzido pela Redação iMasters com autorização do autor. Publicado originalmente em http://alblue.bandlem.com/2014/10/swift-classes-overview.html

é guru em Eclipse e fanático pelo Mac.

Ver perfil