Sobes.tech
Junior — Middle

Cum se disting metodele de instanță, metodele de clasă și metodele statice în programarea orientată pe obiecte?

sobes.tech AI

Răspuns de la AI

În programarea orientată pe obiecte, metodele sunt împărțite în trei tipuri:

  • Metode de instanță — lucrează cu un obiect specific al clasei. Au acces la proprietățile și alte metode ale acestui obiect prin self (în Swift) sau this (în alte limbaje). Sunt apelate pe instanța clasei.

  • Metode de clasă — sunt legate de clasa însăși, nu de un obiect specific. În Swift, sunt declarate cu cuvântul cheie class func. Aceste metode pot accesa proprietățile clasei (statice), dar nu cele ale unei instanțe concrete.

  • Metode statice — similare cu metodele de clasă, dar nu pot fi suprascrise în subclase. În Swift, sunt declarate cu static func. Funcționează la nivel de clasă, fără acces la o instanță.

Exemplu în Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("Aceasta este o metodă de instanță, value = \(value)")
    }

    class func classMethod() {
        print("Aceasta este o metodă de clasă")
    }

    static func staticMethod() {
        print("Aceasta este o metodă statică")
    }
}

let obj = Example()
obj.instanceMethod()      // apelare metodă de instanță
Example.classMethod()     // apelare metodă de clasă
Example.staticMethod()    // apelare metodă statică

Prin urmare, diferența principală constă în nivelul la care operează metoda: instanță, clasă sau metodă statică (care nu poate fi suprascrisă).