Ανάπτυξη Java για αρχάριους

Κληρονομικότητα στην Java - Βασικές έννοιες και παραδείγματα

Όλα τα βίντεο του μαθήματος Ανάπτυξη Java για αρχάριους

Κληρονομιά είναι μια κεντρική έννοια στον αντικειμενοστραφή προγραμματισμό (OOP) και θεωρείται συχνά ως ένας από τους δομικούς λίθους για την αποτελεσματικότητα. Σε αυτό το σεμινάριο, θα βαθύνεις την κατανόησή σου για την κληρονομιά στην Java. Θα μάθεις πώς να χειρίζεσαι τους τροποποιητές πρόσβασης, να χρησιμοποιείς κατασκευαστές και ποιος είναι ο ρόλος της κάλυψης στην κληρονομιά.

Βασικά Δεδομένα

  • Η κληρονομιά επιτρέπει την κληρονομία χαρακτηριστικών και μεθόδων από μια κλάση.
  • Ο τροποποιητής πρόσβασης private περιορίζει την πρόσβαση στις μεταβλητές ή τις μεθόδους, ενώ το protected επιτρέπει αυξημένη πρόσβαση εντός κλάσεων που κληρονομούν από την αρχική κλάση.
  • Οι κατασκευαστές πρέπει να καλούνται στη υποκλάση για να δημιουργηθούν σωστά τα αντικείμενα.
  • Οι μέθοδοι διεπαφής μπορούν να χρησιμοποιηθούν γενικά, όταν έχουμε πολλές συγκεκριμένες κλάσεις.

Οδηγίες βήμα-βήμα

Τροποποιητές πρόσβασης: protected vs. private

Όταν δηλώνεις μια μεταβλητή (π.χ. χρώμα) ως protected σε μια κλάση όπως το όχημα, τότε μπορείς να χρησιμοποιήσεις αυτή τη μεταβλητή σε μια παράγωγη κλάση (π.χ. αυτοκίνητο) άμεσα. Όταν όμως δηλώσεις τη μεταβλητή ως private, δεν μπορείς να έχεις άμεση πρόσβαση σε αυτήν στην υποκλάση.

Κληρονομικότητα στην Java - Βασικές έννοιες και παραδείγματα

Αυτό σημαίνει ότι η πρόσβαση στις private μεταβλητές είναι δυνατή μόνο μέσω των Setter και Getter.

Το παράδειγμα δείχνει ότι πρέπει να χρησιμοποιούμε τις setFarbe και getFarbe για να έχουμε πρόσβαση στη private μεταβλητή farbe.

Κληρονομικότητα στην Java - Βασικές αρχές και παραδείγματα

Εάν η μεταβλητή δηλώνεται ως protected, μπορείς να έχεις άμεση πρόσβαση σε αυτήν μέσα στην κλάση αυτοκίνητο και να αλλάξεις την τιμή.

Χρήση κατασκευαστών στην κληρονομιά

Κατά την ορισμό μιας υποκλάσης, πρέπει να βεβαιωθείς ότι ο κατασκευαστής της υπερκλάσης καλείται σωστά.

Κληρονομικότητα στην Java - Βασικές αρχές και παραδείγματα

Αυτό διασφαλίζει ότι το χρώμα θα αρχικοποιηθεί σωστά κατά τη δημιουργία ενός αντικειμένου αυτοκινήτου.

Κληρονομικότητα στην Java - Βασικές έννοιες και παραδείγματα

Πρόσεχε να ορίσεις έναν κατασκευαστή στην υποκλάση που να περνάει σωστά τις παραμέτρους της υπερκλάσης.

Κληρονομία και κλήσεις μεθόδων

Δύο κλάσεις, όχημα και αυτοκίνητο, σου επιτρέπουν να χρησιμοποιείς κοινές μεταβλητές και μεθόδους. Όταν ορίζεις μια μέθοδο στο όχημα, μπορείς να χρησιμοποιήσεις αυτή τη μέθοδο και στο αυτοκίνητο χωρίς να χρειάζεται να την ξαναγράψεις.

Κληρονομικότητα στην Java - Βασικές αρχές και παραδείγματα

Εδώ καλείται η μέθοδος fahrzeugFarbeAusgeben και επιστρέφει την τιμή του χρώματος που παρέχεται από τη μέθοδο getFarbe.

Περιορισμοί στην πρόσβαση σε μεθόδους

Εάν προσπαθήσεις να καλέσεις μια μέθοδο σε μια υποκλάση που δεν είναι διαθέσιμη για την κλάση, θα λάβεις σφάλμα κατά τη μεταγλώττιση. Στο παράδειγμά μας, πρέπει να περάσεις ένα αντικείμενο οχήματος για να καλέσεις τη μέθοδο getFarbe.

Κληρονομικότητα στην Java - Βασικές αρχές και παραδείγματα

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

Παράδειγμα κλήσης μεθόδων στιγμιαίων παραστάσεων σε στατικούς συμφραζόμενους

Σημείωσε ότι σε στατικές μεθόδους (static) δεν μπορεί να χρησιμοποιηθεί το this-λεξιλόγιο, καθώς δεν αναφέρεται σε συγκεκριμένη στιγμή. Σε αυτές τις περιπτώσεις, ίσως χρειαστεί να χρησιμοποιήσεις άλλη μέθοδο ή να αναδιαρθρώσεις τη λογική.

Κληρονομικότητα στην Java - Βασικές αρχές και παραδείγματα

Με αυτή την κλήση, το χρώμα για το αντικείμενο meinAuto εκτυπώνεται σωστά.

Σύνοψη - Κληρονομιά στην Java: Ένας οδηγός για αρχάριους

Η κληρονομιά είναι μια σημαντική έννοια στον προγραμματισμό με Java, που σε βοηθά να οργανώνεις και να επαναχρησιμοποιείς τον κώδικα. Σε αυτό το σεμινάριο, έχεις μάθει τα βασικά των τροποποιητών πρόσβασης, των κατασκευαστών και των κλήσεων μεθόδων σε σχέση με την κληρονομιά.

Συχνές Ερωτήσεις

Πώς μπορώ να έχω πρόσβαση σε private μεταβλητές στην υποκλάση;Δεν μπορείς να έχεις άμεση πρόσβαση σε private μεταβλητές στην υποκλάση. Χρησιμοποίησε μεθόδους Getter και Setter.

Ποιες είναι οι διαφορές μεταξύ protected και private;το protected επιτρέπει την πρόσβαση στην υποκλάση και στο ίδιο πακέτο, ενώ το private είναι προσβάσιμο μόνο εντός της ίδιας της κλάσης.

Πρέπει να ορίσω τους κατασκευαστές στην υποκλάση;Ναι, αν έχεις τροποποιήσει τον κατασκευαστή της υπερκλάσης, πρέπει να ορίσεις και τους κατασκευαστές στην υποκλάση ανάλογα.

Μπορώ να αντικαθιστώ ελεύθερα μεθόδους υπερκλάσεων στις υποκλάσεις;Ναι, μπορείς να αντικαθιστάς μεθόδους που δεν είναι επισημασμένες με final ή static στην υποκλάση για να υλοποιήσεις συγκεκριμένη συμπεριφορά.