Βίντεο: Εισαγωγή/Εγκατάσταση - Μαθήματα Java #1 2024
Όταν γράφετε ένα αντικειμενοστρεφές πρόγραμμα στην Java, αρχίζετε να σκεφτόμαστε τα δεδομένα. Γράφετε σχετικά με λογαριασμούς. Τι είναι λοιπόν ένας λογαριασμός; Καταγράφετε κώδικα για να χειρίζεστε κλικ με κουμπιά. Τι είναι ένα κουμπί; Γράφετε ένα πρόγραμμα για την αποστολή ελέγχων μισθοδοσίας στους υπαλλήλους. Τι είναι υπάλληλος;
Σε αυτό το παράδειγμα, ένας υπάλληλος είναι κάποιος με όνομα και τίτλο εργασίας. Σίγουρα, οι εργαζόμενοι έχουν και άλλα χαρακτηριστικά, αλλά για το λόγο αυτό επιμένουν στα βασικά. Ο κώδικας σε αυτήν την λίστα ορίζει τι σημαίνει να είσαι υπάλληλος.
εισαγάγετε τη στατική java. lang. Σύστημα. έξω; δημόσιος υπάλληλος κατηγορίας {ιδιωτικό όνομα συμβολοσειράς. ιδιωτική εργασία String jobTitle; Δημόσια κενή setName {name = nameIn;} δημόσιο String getName () {return name;} public void setJobTitle (String jobTitleIn) {jobTitle = jobTitleIn;} δημόσιο String getJobTitle () {return jobTitle; διπλό ποσόΠαροχή) {έξω. printf ("Πληρώστε με τη σειρά του% s", όνομα); έξω. printf ("(% s) *** $", jobTitle); έξω. printf ("%,.2fn", amountPaid)?}}
Στην καταχώριση ορίζεται μια κλάση Employee. Μπορείτε να χρησιμοποιήσετε αυτό που ορίζετε εδώ και να επεκτείνετε τον ορισμό για να δημιουργήσετε νέες, πιο εξειδικευμένες κατηγορίες. Έτσι, σε αυτή την επόμενη λίστα, ορίζετε μια νέα κλάση - μια τάξη FullTimeEmployee.
δημόσια τάξη FullTimeEmployee επεκτείνει το Employee {private double weeklySalary; ιδιωτικό διπλό όφελοςΜείωση; Δημόσια κενή setWeeklySalary (διπλή εβδομάδαSalaryIn) {εβδομαδιαίαSalary = εβδομαδιαίαSalaryIn}} δημόσια διπλή getWeeklySalary () {επιστροφή weeklySalary;} δημόσιο κενό setBenefitDeduction (double benefitDedIn) {benefitDeduction = benefitDedIn;} public double getBenefitDeduction) {εβδομαδιαία επιστροφήΣυχνών - αποζημίωση για παροχές ·}}
Κοιτάζοντας την καταχώριση, μπορείτε να δείτε ότι κάθε εμφάνιση της κλάσης FullTimeEmployee έχει δύο πεδία: εβδομαδιαίααποδοχήΣύριου και αποζημίωση παροχών. Αλλά είναι αυτά τα μόνα πεδία που έχει κάθε εμφάνιση του FullTimeEmployee; Οχι, δεν είναι.
Η πρώτη γραμμή λέει ότι η κλάση FullTimeEmployee επεκτείνει την υπάρχουσα κλάση Employee. Αυτό σημαίνει ότι εκτός από την ύπαρξη εβδομαδιαίας πληρωμής και αποζημίωσης παροχών, κάθε εμφάνιση FullTimeEmployee έχει επίσης δύο άλλα πεδία: όνομα και jobTitle. Αυτά τα δύο πεδία προέρχονται από τον ορισμό της κατηγορίας Employee, τον οποίο μπορείτε να βρείτε στην πρώτη λίστα.
Στη δεύτερη λίστα, η μαγική λέξη εκτείνεται . Όταν μια κλάση επεκτείνει μια υπάρχουσα κλάση, η κλάση επέκτασης κληρονομεί αυτόματα τη λειτουργικότητα που έχει οριστεί στην υπάρχουσα κλάση.Έτσι, η κλάση FullTimeEmployee κληρονομεί τα πεδία όνομα και jobTitle.
Η κλάση FullTimeEmployee κληρονομεί επίσης όλες τις μεθόδους που δηλώνονται στην κλάση Employee - setName, getName, setJobTitle, getJobTitle και cutCheck. Η κλάση FullTimeEmployee είναι μια υποκατηγορία της κλάσης Employee.
Αυτό σημαίνει ότι η κλάση Employee είναι η κλάση της κλάσης FullTimeEmployee. Μπορείτε επίσης να μιλήσετε ως προς τους συγγενείς αίματος. Η τάξη του FullTimeEmployee είναι το παιδί της κλάσης Employee και η κλάση Employee είναι ο γονέας της κατηγορίας FullTimeEmployee.
Είναι σχεδόν (αλλά όχι αρκετά) σαν να ορίστηκε η κλάση FullTimeEmployee από τον κώδικα σε αυτήν την καταχώρηση. Αυτός ο κώδικας είναι ψεύτικος αλλά ενημερωτικός.
εισαγάγετε στατική java. lang. Σύστημα. έξω; δημόσια τάξη FullTimeEmployee {ιδιωτικό όνομα συμβολοσειράς; ιδιωτική εργασία String jobTitle; ιδιωτική διπλή εβδομάδαSalary? ιδιωτικό διπλό όφελοςΜείωση; Δημόσια κενή setName {name = nameIn;} δημόσιο String getName () {return name;} public void setJobTitle (String jobTitleIn) {jobTitle = jobTitleIn;} δημόσιο String getJobTitle () {return jobTitle;} public void setWeeklySalary διπλή weeklySalaryIn) {weeklySalary = weeklySalaryIn?} δημόσια διπλό getWeeklySalary () {επιστρέψει weeklySalary?} public void setBenefitDeduction (διπλή benefitDedIn) {benefitDeduction = benefitDedIn?} δημόσια διπλό getBenefitDeduction () {επιστρέψει benefitDeduction?} δημόσια διπλό findPaymentAmount () {επιστρέφουν weeklySalary - benefitDeduction} δημόσιο κενό cutCheck (διπλό ποσόPaid) {out. printf ("Πληρώστε με τη σειρά του% s", όνομα); έξω. printf ("(% s) *** $", jobTitle); έξω. printf ("%, 2fn", amountPaid);}}
Γιατί είναι αυτή η λίστα πλαστό κώδικα; Λοιπόν, η κύρια διαφορά μεταξύ αυτής της καταχώρισης και της κατάστασης κληρονομίας στις προηγούμενες καταχωρίσεις είναι η εξής: Μια τάξη παιδιού δεν μπορεί να παραπέμψει απευθείας τα ιδιωτικά πεδία της μητρικής κατηγορίας της. Για να γίνει οτιδήποτε με τα ιδιωτικά πεδία της κλάσης γονέων, η τάξη των παιδιών πρέπει να καλέσει τις μεθόδους πρόσβασης των γονικών τάξεων.
Πίσω στη δεύτερη λίστα, ονομάζοντας setName ("Rufus") θα είναι νόμιμος, αλλά το όνομα του κώδικα = "Rufus" δεν θα ήταν. Εάν πιστεύετε ότι όλα όσα διαβάσατε στην τελευταία λίστα, νομίζετε ότι ο κώδικας στην τάξη του FullTimeEmployee μπορεί να κάνει όνομα = "Rufus". Λοιπόν, δεν μπορεί.
Δεν χρειάζεστε τον υπάλληλο. java στο σκληρό σας δίσκο για να γράψετε κώδικα που επεκτείνει την κλάση Εργοδοτών. Το μόνο που χρειάζεστε είναι ο υπάλληλος του αρχείου. τάξη.