Queria detalhes quando eu posso usar super.init, não posso e quando tanto faz.
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.