Sobes.tech
Junior — Middle

Jak odróżnić metody instancji, metody klasy i metody statyczne w programowaniu obiektowym?

sobes.tech AI

Odpowiedź od AI

W programowaniu obiektowym metody dzielą się na trzy typy:

  • Metody instancji — działają na konkretnym obiekcie klasy. Mają dostęp do właściwości i innych metod tego obiektu przez self (w Swift) lub this (w innych językach). Wywoływane są na instancji klasy.

  • Metody klasy — są związane z samą klasą, a nie z konkretnym obiektem. W Swift deklaruje się je za pomocą słowa kluczowego class func. Takie metody mogą odwoływać się do właściwości klasy (statycznych), ale nie do właściwości konkretnego obiektu.

  • Metody statyczne — podobne do metod klasy, ale nie mogą być nadpisywane w podklasach. W Swift deklaruje się je za pomocą static func. Działają na poziomie klasy, bez dostępu do instancji.

Przykład w Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("To jest metoda instancji, value = \(value)")
    }

    class func classMethod() {
        print("To jest metoda klasy")
    }

    static func staticMethod() {
        print("To jest metoda statyczna")
    }
}

let obj = Example()
obj.instanceMethod()      // wywołanie metody instancji
Example.classMethod()     // wywołanie metody klasy
Example.staticMethod()    // wywołanie metody statycznej

Główna różnica polega na poziomie, na którym działa metoda: instancja, klasa lub metoda statyczna (nie można jej nadpisać).