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()    // κλήση στατικής μεθόδου

Έτσι, η κύρια διαφορά βρίσκεται στο επίπεδο στο οποίο λειτουργεί η μέθοδος: στιγμιότυπο, κλάση ή στατική (μη υπερισχύσιμη) μέθοδος.