Sobes.tech
Junior — Middle

Ako rozlíšiť metódy inštancie, metódy triedy a statické metódy v objektovo orientovanom programovaní?

sobes.tech AI

Odpoveď od AI

V objektovo orientovanom programovaní sú metódy rozdelené do troch typov:

  • Metódy inštancie — pracujú s konkrétnym objektom triedy. Majú prístup k vlastnostiam a ďalším metódam tohto objektu cez self (v Swift) alebo this (v iných jazykoch). Volajú sa na inštancii triedy.

  • Metódy triedy — sú spojené s samotnou triedou, nie s konkrétnym objektom. V Swift sú deklarované kľúčovým slovom class func. Tieto metódy môžu pristupovať k vlastnostiam triedy (statickým), ale nie k vlastnostiam konkrétnej inštancie.

  • Statické metódy — podobné metódam triedy, ale nemôžu byť prepísané v podtriedach. V Swift sú deklarované pomocou static func. Fungujú na úrovni triedy, bez prístupu k inštancii.

Príklad v Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("Toto je metóda inštancie, value = \(value)")
    }

    class func classMethod() {
        print("Toto je metóda triedy")
    }

    static func staticMethod() {
        print("Toto je statická metóda")
    }
}

let obj = Example()
obj.instanceMethod()      // volanie metódy inštancie
Example.classMethod()     // volanie metódy triedy
Example.staticMethod()    // volanie statickej metódy

Hlavný rozdiel je teda na úrovni, na ktorej metóda funguje: inštancia, trieda alebo statická (neprepísateľná) metóda.