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) sauthis(î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ă).