Sobes.tech
Junior — Middle

Jak rozlišit metody instance, metody třídy a statické metody v objektově orientovaném programování?

sobes.tech AI

Odpověď od AI

V objektově orientovaném programování jsou metody rozděleny do tří typů:

  • Metody instance — pracují s konkrétním objektem třídy. Mají přístup k vlastnostem a dalším metodám tohoto objektu přes self (v Swift) nebo this (v jiných jazycích). Volají se na instanci třídy.

  • Metody třídy — jsou spojeny s samotnou třídou, nikoliv s konkrétním objektem. Ve Swift jsou deklarovány klíčovým slovem class func. Tyto metody mohou přistupovat ke vlastnostem třídy (statickým), ale nikoliv k vlastnostem konkrétní instance.

  • Statické metody — jsou podobné metodám třídy, ale nemohou být přepsány v podtřídách. Ve Swift jsou deklarovány pomocí static func. Fungují na úrovni třídy, bez přístupu k instanci.

Příklad ve Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("Toto je metoda instance, value = \(value)")
    }

    class func classMethod() {
        print("Toto je metoda třídy")
    }

    static func staticMethod() {
        print("Toto je statická metoda")
    }
}

let obj = Example()
obj.instanceMethod()      // volání metody instance
Example.classMethod()     // volání metody třídy
Example.staticMethod()    // volání statické metody

Hlavní rozdíl je tedy na úrovni, na které metoda pracuje: instance, třída nebo statická (nepřepsatelná) metoda.