¿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) othis(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).