Sobes.tech
Junior — Middle

Как да различаваме методите на екземпляра, методите на класа и статичните методи в обектно-ориентираното програмиране?

sobes.tech AI

Отговор от AI

В обектно-ориентираното програмиране методите се делят на три типа:

  • Методи на екземпляр — работят с конкретен обект на класа. Те имат достъп до свойствата и другите методи на този обект чрез self (в Swift) или this (в други езици). Те се извикват на екземпляра на класа.

  • Методи на класа — свързани са със самия клас, а не с конкретен обект. В Swift се обявяват с ключовата дума class func. Тези методи могат да достъпват свойствата на класа (статични), но не и тези на конкретен екземпляр.

  • Статични методи — подобни на методите на класа, но не могат да бъдат презаписвани в подкласове. В Swift се обявяват с static func. Те работят на ниво на класа, без достъп до екземпляр.

Пример в Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("Това е метод на екземпляр, value = \(value)")
    }

    class func classMethod() {
        print("Това е метод на класа")
    }

    static func staticMethod() {
        print("Това е статичен метод")
    }
}

let obj = Example()
obj.instanceMethod()      // извикване на метод на екземпляр
Example.classMethod()     // извикване на метод на класа
Example.staticMethod()    // извикване на статичен метод

Основната разлика е нивото, на което работи методът: екземпляр, клас или статичен (непренаписваем) метод.