Sobes.tech
Junior — Middle

¿Cómo distinguir los métodos de instancia, los métodos de clase y los métodos estáticos en programación orientada a objetos?

sobes.tech AI

Respuesta de la IA

En la programación orientada a objetos, los métodos se dividen en tres tipos:

  • Métodos de instancia — trabajan con un objeto específico de la clase. Tienen acceso a las propiedades y otros métodos de ese objeto a través de self (en Swift) o this (en otros lenguajes). Se llaman en la instancia de la clase.

  • Métodos de clase — están relacionados con la propia clase, no con un objeto específico. En Swift, se declaran con la palabra clave class func. Estos métodos pueden acceder a las propiedades de la clase (estáticas), pero no a las propiedades de una instancia concreta.

  • Métodos estáticos — similares a los métodos de clase, pero no pueden ser sobrescritos en subclases. En Swift, se declaran con static func. También trabajan a nivel de clase, sin acceso a una instancia.

Ejemplo en Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("Este es un método de instancia, value = \(value)")
    }

    class func classMethod() {
        print("Este es un método de clase")
    }

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

let obj = Example()
obj.instanceMethod()      // llamada a método de instancia
Example.classMethod()     // llamada a método de clase
Example.staticMethod()    // llamada a método estático

Por lo tanto, la principal diferencia es el nivel en el que opera el método: instancia, clase o método estático (no sobrescribible).