Sobes.tech
Junior — Middle

¿Qué diferencias existen entre los métodos de tipo estático, los métodos de clase y los métodos normales en la programación orientada a objetos?

sobes.tech AI

Respuesta de la IA

En la programación orientada a objetos (por ejemplo, Swift o Python), se distinguen tres tipos de métodos:

  1. Métodos normales (métodos de instancia) — se llaman en instancias de la clase y tienen acceso a los datos de un objeto específico a través de self.

  2. Métodos de clase (class methods) — se llaman en la propia clase, no en una instancia. En Swift se declaran con la palabra clave class func, en Python con el decorador @classmethod. Estos métodos reciben como primer parámetro una referencia a la propia clase (cls), lo que permite trabajar con la clase y sus propiedades.

  3. Métodos estáticos (static methods) — también se llaman en la clase, pero no tienen acceso ni a la instancia ni a la clase. En Swift — static func, en Python — @staticmethod. Son similares a funciones normales, agrupadas dentro de la clase para una organización lógica.

Ejemplo en Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("Método de instancia, valor = \(value)")
    }

    class func classMethod() {
        print("Método de clase")
    }

    static func staticMethod() {
        print("Método estático")
    }
}

let obj = Example()
obj.instanceMethod()      // Método de instancia, valor = 0
Example.classMethod()     // Método de clase
Example.staticMethod()    // Método estático

Por lo tanto, la principal diferencia es que los métodos normales trabajan con un objeto específico, los métodos de clase con la propia clase y sus propiedades, y los métodos estáticos son funciones independientes agrupadas dentro de la clase.