1
resposta

Super.init()

Queria detalhes quando eu posso usar super.init, não posso e quando tanto faz.

1 resposta

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.