Sobes.tech
Junior — Middle

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) o this (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).