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) outhis(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).