Sobes.tech
Junior — Middle

Kā atšķirt objektorientētās programmēšanas metodes, piemēram, instances metodi, klases metodi un statisko metodi?

sobes.tech AI

Atbilde no AI

Objektorientētajā programmēšanā metodes iedala trīs veidos:

  • Instanču metodes — darbojas ar konkrētu klases objektu. Tām ir piekļuve šī objekta īpašībām un citām metodēm caur self (Swift) vai this (citos valodās). Tās tiek izsauktas uz klases instances.

  • Klases metodes — ir saistītas ar pašu klasi, ne ar konkrētu objektu. Swift tās deklarē ar atslēgvārdu class func. Šīs metodes var piekļūt klases (statiskajām) īpašībām, bet ne konkrētas instances īpašībām.

  • Statiskās metodes — līdzīgas klases metodēm, bet tās nevar pārrakstīt apakšklasēs. Swift tās deklarē ar static func. Tās darbojas klases līmenī, bez piekļuves instancē.

Piemērs Swift:

class Example {
    var value: Int = 0

    func instanceMethod() {
        print("Šī ir instanču metode, value = \(value)")
    }

    class func classMethod() {
        print("Šī ir klases metode")
    }

    static func staticMethod() {
        print("Šī ir statiska metode")
    }
}

let obj = Example()
obj.instanceMethod()      // instanču metodes izsaukums
Example.classMethod()     // klases metodes izsaukums
Example.staticMethod()    // statiskas metodes izsaukums

Tādējādi galvenā atšķirība ir līmenis, kurā darbojas metode: instancē, klasē vai statiskā (nepārrakstāma) metode.