Sobes.tech
Junior — Middle

Μπορεί κανείς να χρησιμοποιήσει διαφορετικά ονόματα παραμέτρων στην υπογραφή κατά την υπερφόρτωση μεθόδων;

sobes.tech AI

Απάντηση από AI

Στο Swift, κατά την υπερκάλυψη μεθόδων, μπορείτε να χρησιμοποιήσετε διαφορετικά ονόματα παραμέτρων στην υπογραφή, αλλά είναι σημαντικό να κατανοήσετε ότι για τον μεταγλωττιστή, τα εξωτερικά ονόματα παραμέτρων (external parameter names) είναι αυτά που έχουν σημασία, και όχι τα εσωτερικά (internal parameter names).

Κατά την υπερκάλυψη μιας μεθόδου, η εξωτερική διεπαφή πρέπει να ταιριάζει ώστε η μέθοδος να υπερκαλύπτεται σωστά. Τα εσωτερικά ονόματα παραμέτρων μπορούν να διαφέρουν, καθώς είναι ορατά μόνο μέσα στο σώμα της μεθόδου.

Παράδειγμα:

class Parent {
    func greet(name personName: String) {
        print("Hello, \(personName)")
    }
}

class Child: Parent {
    override func greet(name friendName: String) { // το εξωτερικό όνομα "name" ταιριάζει
        print("Hi, \(friendName)")
    }
}

Εδώ, το εξωτερικό όνομα παραμέτρου name ταιριάζει, και τα εσωτερικά ονόματα (personName και friendName) διαφέρουν — αυτό είναι επιτρεπτό.