Sobes.tech
Back to questions
Junior — Middle
73

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

Answer from AI

sobes.tech 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()    // вызов статического метода

Таким образом, главное отличие — уровень, на котором метод работает: экземпляр, класс или статический (непереопределяемый) метод.