Sobes.tech
Junior — Middle

Чӣ гуна бояд усулҳои намунавӣ, усулҳои синф ва усулҳои статикӣ дар барномасозии объектӣ фарқ кунанд?

sobes.tech AI

Ҷавоб аз 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()    // даъвати равиши статикӣ

Аз ин сабаб, фарқияти асосӣ — сатҳи корӣ аст, ки равиш ба он кор мекунад: намуна, синф ё равиши статикӣ (ки дубора навиштанаш мумкин нест).