Sobes.tech
Junior — Middle

Como distinguir métodos de instância, métodos de classe e métodos estáticos na programação orientada a objetos?

sobes.tech IA

Resposta da IA

Na programação orientada a objetos, os métodos são divididos em três tipos:

  • Métodos de instância — trabalham com um objeto específico da classe. Têm acesso às propriedades e outros métodos desse objeto através de self (em Swift) ou this (em outras linguagens). São chamados na instância da classe.

  • Métodos de classe — estão relacionados com a própria classe, não com um objeto específico. Em Swift, são declarados com a palavra-chave class func. Esses métodos podem acessar as propriedades da classe (estáticas), mas não as propriedades de uma instância concreta.

  • Métodos estáticos — semelhantes aos métodos de classe, mas não podem ser sobrescritos em subclasses. Em Swift, são declarados com static func. Também operam ao nível da classe, sem acesso a uma instância.

Exemplo em Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("Este é um método de instância, value = \(value)")
    }

    class func classMethod() {
        print("Este é um método de classe")
    }

    static func staticMethod() {
        print("Este é um método estático")
    }
}

let obj = Example()
obj.instanceMethod()      // chamada do método de instância
Example.classMethod()     // chamada do método de classe
Example.staticMethod()    // chamada do método estático

Portanto, a principal diferença é o nível em que o método opera: instância, classe ou método estático (não sobrescrevível).