Junior
Μίλησέ μου για την κληρονομικότητα στο Kotlin.
sobes.tech AI
Απάντηση από AI
Η κληρονομικότητα στο Kotlin είναι ένας μηχανισμός που επιτρέπει τη δημιουργία νέων κλάσεων βασιζόμενων σε υπάρχουσες. Η νέα κλάση (υιός ή παράγωγη) κληρονομεί τις ιδιότητες (μεταβλητές) και τις μεθόδους (συναρτήσεις) της γονικής (βασικής) κλάσης. Αυτό προάγει την επανάχρηση κώδικα και τη δημιουργία ιεραρχιών κλάσεων.
Βασικά χαρακτηριστικά:
- Δεν είναι ανοιχτό από προεπιλογή: Στο Kotlin, οι κλάσεις και οι μέθοδοι είναι
finalαπό προεπιλογή, που σημαίνει ότι δεν μπορούν να κληρονομηθούν ή να υπεραριστούν. Για να επιτραπεί η κληρονομικότητα, πρέπει να σημειωθούν ρητά με τη λέξη-κλειδίopen. - Κατασκευαστές: Η υποκλάση πρέπει να καλεί τον κατασκευαστή μιας από τις βασικές κλάσεις (αν υπάρχουν περισσότερες, στην περίπτωση των διεπαφών). Η κλήση γίνεται κατά την δήλωση της υποκλάσης χρησιμοποιώντας
(...). - Υπερκαλύψεις μεθόδων και ιδιοτήτων: Για να υπεραριστεί μια μέθοδος ή ιδιότητα της βασικής κλάσης στην υποκλάση, πρέπει να σημειωθούν με
openστη βασική κλάση καιoverrideστην υποκλάση. super: Η λέξη-κλειδίsuperχρησιμοποιείται για πρόσβαση στα μέλη της βασικής κλάσης από την υποκλάση.- Απλή κληρονομικότητα υλοποίησης: Το Kotlin υποστηρίζει απλή κληρονομικότητα υλοποίησης (από μία κλάση), αλλά υποστηρίζει πολλαπλή κληρονομικότητα διεπαφών.
Παράδειγμα βασικής κλάσης:
// Βασική κλάση
open class Animal(val name: String) {
open fun makeSound() {
println("$name κάνει έναν ήχο")
}
}
Παράδειγμα υποκλάσης:
// Υποκλάση
class Dog(name: String) : Animal(name) {
override fun makeSound() {
println("$name γαβγίζει")
}
}
Χρήση:
// Χρήση αντικειμένων
fun main() {
val animal = Animal("Γενικό Ζώο")
animal.makeSound() // Έξοδος: Γενικό Ζώο κάνει έναν ήχο
val dog = Dog("Bobby")
dog.makeSound() // Έξοδος: Bobby γαβγίζει
}