Come distinguere i metodi di istanza, i metodi di classe e i metodi statici nella programmazione orientata agli oggetti?
sobes.tech AI
Risposta dell'AI
Nella programmazione orientata agli oggetti, i metodi sono divisi in tre tipi:
-
Metodi di istanza — operano con un oggetto specifico della classe. Hanno accesso alle proprietà e ad altri metodi di quell'oggetto tramite
self(in Swift) othis(in altri linguaggi). Vengono chiamati sull'istanza della classe. -
Metodi di classe — sono associati alla classe stessa, non a un oggetto specifico. In Swift, vengono dichiarati con la parola chiave
class func. Questi metodi possono accedere alle proprietà della classe (statiche), ma non a quelle di un'istanza concreta. -
Metodi statici — sono simili ai metodi di classe, ma non possono essere sovrascritti nelle sottoclassi. In Swift, vengono dichiarati con
static func. Operano anche a livello di classe, senza accesso a un'istanza.
Esempio in Swift:
class Example {
var value: Int = 0
func instanceMethod() {
print("Questo è un metodo di istanza, value = \(value)")
}
class func classMethod() {
print("Questo è un metodo di classe")
}
static func staticMethod() {
print("Questo è un metodo statico")
}
}
let obj = Example()
obj.instanceMethod() // chiamata al metodo di istanza
Example.classMethod() // chiamata al metodo di classe
Example.staticMethod() // chiamata al metodo statico
Quindi, la principale differenza sta nel livello in cui opera il metodo: istanza, classe o metodo statico (non sovrascrivibile).