Queria detalhes quando eu posso usar super.init, não posso e quando tanto faz.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Queria detalhes quando eu posso usar super.init, não posso e quando tanto faz.
Oi Leandro, tudo bem?
A keyword super.init é utilizada para chamar o construtor da classe pai.
Por exemplo:
class Carro {
var marca: String
var cor: UIColor
init(marca: String, cor: UIColor) {
self.marca = marca
self.cor = cor
}
}Se eu criar outra classe, que herde essa, como por exemplo:
class Fusca: Carro {
var modelo: String
init(modelo: String, marca: String) {
self.modelo = modelo
super.init(marca: "VW", cor: .black)
}
}Repare que nesse momento que eu criei a classe Fusca eu fui obrigado a implementar o super.init.
Agora, repare nessa modificação que eu vou fazer na classe Carro:
class Carro {
var marca = ""
var cor = UIColor.black
}Repare que aqui, eu não defini um método construtor para a classe Carro, ou seja, ao instanciar essa classe eu não tenho um método construtor.
Nesse momento, ao herdar a classe Carro eu não preciso chamar o super.init (Pois não há um método construtor).
Para saber exatamente se é preciso utilizar o super.init ou não, é necessário analisar a classe pai, para entender as regras de utilização.
Espero ter ajudado.
Abs.