Πώς διακρίνουμε τις μεθόδους στιγμιότυπου, τις μεθόδους κλάσης και τις στατικές μεθόδους στον αντικειμενοστραφή προγραμματισμό;
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() // κλήση στατικής μεθόδου
Έτσι, η κύρια διαφορά βρίσκεται στο επίπεδο στο οποίο λειτουργεί η μέθοδος: στιγμιότυπο, κλάση ή στατική (μη υπερισχύσιμη) μέθοδος.